一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - PHP教程 - PHP中數組的三種排序方法分享

PHP中數組的三種排序方法分享

2019-12-31 17:08PHP教程網 PHP教程

PHP中數組的三種排序方法,主要包括冒泡排序法、選擇排序法、插入排序法,需要的朋友可以參考下

一、冒泡排序法 
說明:找到最大的數,排列到最后面,然后繼續找 

例: 

復制代碼代碼如下:


$arr = array(3,5,-1,0,2); 
for($i=0;$i<count($arr)-1;$i++){ 
for($j=0;$j<count($arr)-1-$i;$j++){ 
if($arr[$j]>$arr[$j+1]){ 
$temp = $arr[$j]; 
$arr[$j]=$arr[$j+1]; 
$arr[$j+1]=$temp; 



理解: 
3,5,-1,0,2 
//從第一個數開始往后比較,如果比后面的數大則與后面的數調位置 
//第一次,3小于5,那么不變 
//第二次,5大于-1,那么變成 
3,-1,5,0,2 
//第三次,5大于0 
3,-1,0,5,2 
//第四次,5大于2 
3,-1,0,2,5 
至此完成一次內循環,此時最后一個數完成排序,下次將不參與 
3,-1,0,2,5第二次外循環開始 第一次:3大于-1 
-1,3,0,2,5 
第二次:3大于0 
-1,0,3,2,5 
第三次:3大于2 
-1,0,2,3,5 
至此完成后面兩位數的排序了,接下來類推 
-1,0,2,3,5 
二、選擇排序法 
說明:先假設第一個數就是最小的數,然后將后面的數依次與它比較,如果假設的數不是最小的數,就將它與后面的最小的數調換位置 

復制代碼代碼如下:


$arr=array(2,1,-1,3,0); 
for($i=0;$i<count($arr)-1;$i++){ 
$minval = $arr[$i]; 
$minindex = $i; 
for($j=1+$i;$j<count($arr);$j++){ 
if($arr[$j]<$minval){ 
$minval = $arr[$j]; 
$minindex = $j; 


$temp = $arr[$i]; 
$arr[$i] = $arr[$minindex]; 
$arr[$minindex] = $temp; 


理解: 
2,1,-1,3,0 
//先假設第一個數2為最小值,它后面的數依次與2做比較,尋找到最小的那個數 
過程: 
1小于2,那么minval=1 
-1小于1,那么minval=-1 
3大于-1,不變 
0大于-1,不變 
那么現在就找到了該數組中最小的數了為-1 
將-1與2調換位置就完成第一個數的排序了 
那么現在數組變成 
-1,1,2,3,0 
現在第一個數-1已經為有序,所以不參與比較了,往后面繼續 
現在假設minval=1 
2大于1,不變 
3大于1,不變 
0小于1,那么minval=0 
現在一次循環完成,調換0與1的位置完成第二個數的排序 
那么現在數組變成 
-1,0,2,3,1 
//后面的推法與上面相同。。。 

三、插入排序法

說明:先假設一個數組中的第一個數為單獨的有序數組,再將后面的一個數與它【這里隨它I的增長,就變成它們了】做比較,如果后面的數比假設的數還小,則將小的那個數后移,最后將那個數移到最前面 

復制代碼代碼如下:


$arr=array(2,1,-1,3,0); 
for($i=1;$i<count($arr);$i++){ 
$insertval=$arr[$i]; 
$insertindex = $i-1; 
while($insertindex>=0 && $insertval<$arr[$insertindex]){ 
$arr[$insertindex+1]=$arr[$insertindex]; 
$insertindex--; 

$temp = $arr[$i]; 
$arr[$insertindex+1]=$insertval; 


理解: 
2,1,-1,3,0 
//第一次,先保存待插入的數1為insertval,再拿 insertval 與2比較,1小于2,所以把2后移,變成如下的圖 
2,2,-1,3,0 
//此時2前面沒有數字了,insertindex=0,所以比較完成,那么將insertval插入到尋找到的這個位置。變成如下圖 
1,2,-1,3,0 
//此時,1,2變成有序數組 
//第二次,先保存待插入的數-1為insertval,再拿insertval與2做比較,-1小于2,所以把2后移,變成如下圖 
1,2,2,3,0 
//此時,再拿insertval與1做比較,-1小于1,那么把-1后移,變成如下圖(這就是一個拿待插入數與前面的有序數組比較的過程) 
1,1,2,3,0 
//此時,insertindex到頭了,所以將insertval插入該位置 
-1,1,2,3,0 
//后面推法如上

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 成人免费播放 | 麻豆最新地址 | 国产麻豆成91 | 亚洲第一区se | 精品国产免费久久久久久婷婷 | 狠狠涩 | 国产精品国产三级国产专区不 | 欧美一卡二卡科技有限公司 | 国产欧美日韩综合二区三区 | jiizz亚洲护士厕所 | fquer老师| 精品无码久久久久久久动漫 | 亚洲欧洲日产国码 最新 | 精精国产xxxx视频在线播放器 | 娇小性色 | 草莓绿巨人香蕉茄子芭乐 | 亚洲欧美日韩国产一区二区精品 | 国产在线伊人 | 午夜片神马影院福利 | 麻豆网站视频国产在线观看 | 日本激情小说 | 午夜一区二区免费视频 | 咪咪爱小说 | 亚洲黄色网页 | 麻豆小视频在线观看 | 青柠影视在线播放观看高清 | 国内精品91东航翘臀女神在线 | 国产视频91在线 | 91极品女神久色在线播放 | 亚洲情欲网 | 激情婷婷成人亚洲综合 | 日韩大片免费观看 | 99影视在线视频免费观看 | 国产欧美精品专区一区二区 | 国产高清一区二区三区免费视频 | 日韩福利网站 | 白鹿扒开内裤露出尿孔 | 久久免费看少妇高潮A片特爽 | 国产在线精品成人一区二区三区 | 好紧好爽的午夜寂寞视频 | 国产卡一卡二卡四卡无卡 |