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

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

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 
//后面推法如上

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 欧美色图日韩 | 18成人在线观看 | 男人的天堂在线观看免费 | asian4you裸模| 好大好硬好紧太深了受不了 | 欠操h | 色呦呦入口| 久热在线这里只有精品7 | 国产趴着打光屁股sp抽打 | 欧美一二 | 香蕉国产精品偷在线播放 | 99久久精品无码一区二区毛片 | 亚洲精品久久久久久婷婷 | 揉搓喷水h | 亚洲成人第一 | 奇米影视在线视频 | 日韩欧美色图 | 韩国帅男同gay网站 韩国三级在线播放 | 国产精品乱码高清在线观看 | 成人1234| 欧美又大又粗又长又硬 | 国产美女下面流出白浆视频 | 免费看黄色片网站 | 日韩v| 国产精品露脸国语对白手机视频 | 精品91一区二区三区 | 男人插曲女人下面 | 黄+色+性+人免费 | 51国产午夜精品免费视频 | 亚洲精品动漫在线观看 | 91李宗精品72集在线观看 | 国产成人精品第一区二区 | 欧美一区二区三区免费看 | 久久不卡免费视频 | 亚洲欧美日韩国产综合专区 | 四虎网站最新网址 | 亚洲国产精品一区二区久久 | 男人午夜视频在线观看 | 国产成人啪精品视频站午夜 | 2021最新国产成人精品视频 | 亚欧成人中文字幕一区 |