日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > php >内容正文

php

PHP中数组的三种排序方法

發(fā)布時(shí)間:2023/12/18 php 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 PHP中数组的三种排序方法 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

一、冒泡排序法

說(shuō)明:找到最大的數(shù),排列到最后面,然后繼續(xù)找 例: $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 //從第一個(gè)數(shù)開始往后比較,如果比后面的數(shù)大則與后面的數(shù)調(diào)位置? //第一次,3小于5,那么不變 //第二次,5大于-1,那么變成 3,-1,5,0,2 //第三次,5大于0 3,-1,0,5,2 //第四次,5大于2 3,-1,0,2,5 至此完成一次內(nèi)循環(huán),此時(shí)最后一個(gè)數(shù)完成排序,下次將不參與 3,-1,0,2,5 第二次外循環(huán)開始 第一次:3大于-1 -1,3,0,2,5 第二次:3大于0 -1,0,3,2,5 第三次:3大于2 -1,0,2,3,5 至此完成后面兩位數(shù)的排序了,接下來(lái)類推 -1,0,2,3,5 ? 二、選擇排序法 說(shuō)明:先假設(shè)第一個(gè)數(shù)就是最小的數(shù),然后將后面的數(shù)依次與它比較,如果假設(shè)的數(shù)不是最小的數(shù),就將它與后面的最小的數(shù)調(diào)換位置 $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 //先假設(shè)第一個(gè)數(shù)2為最小值,它后面的數(shù)依次與2做比較,尋找到最小的那個(gè)數(shù) 過程: 1小于2,那么minval=1 -1小于1,那么minval=-1 3大于-1,不變 0大于-1,不變 那么現(xiàn)在就找到了該數(shù)組中最小的數(shù)了為-1 將-1與2調(diào)換位置就完成第一個(gè)數(shù)的排序了 那么現(xiàn)在數(shù)組變成 -1,1,2,3,0 現(xiàn)在第一個(gè)數(shù)-1已經(jīng)為有序,所以不參與比較了,往后面繼續(xù) 現(xiàn)在假設(shè)minval=1 2大于1,不變 3大于1,不變 0小于1,那么minval=0 現(xiàn)在一次循環(huán)完成,調(diào)換0與1的位置完成第二個(gè)數(shù)的排序 那么現(xiàn)在數(shù)組變成 -1,0,2,3,1 //后面的推法與上面相同。。。 三、插入排序法 說(shuō)明:先假設(shè)一個(gè)數(shù)組中的第一個(gè)數(shù)為單獨(dú)的有序數(shù)組,再將后面的一個(gè)數(shù)與它【這里隨它I的增長(zhǎng),就變成它們了】做比較,如果后面的數(shù)比假設(shè)的數(shù)還小,則將小的那個(gè)數(shù)后移,最后將那個(gè)數(shù)移到最前面 $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 //第一次,先保存待插入的數(shù)1為insertval,再拿 insertval?與2比較,1小于2,所以把2后移,變成如下的圖 2,2,-1,3,0 //此時(shí)2前面沒有數(shù)字了,insertindex=0,所以比較完成,那么將insertval插入到尋找到的這個(gè)位置。變成如下圖 1,2,-1,3,0 //此時(shí),1,2變成有序數(shù)組 //第二次,先保存待插入的數(shù)-1為insertval,再拿insertval與2做比較,-1小于2,所以把2后移,變成如下圖 1,2,2,3,0 //此時(shí),再拿insertval與1做比較,-1小于1,那么把-1后移,變成如下圖(這就是一個(gè)拿待插入數(shù)與前面的有序數(shù)組比較的過程) 1,1,2,3,0 //此時(shí),insertindex到頭了,所以將insertval插入該位置 -1,1,2,3,0 //后面推法如上

轉(zhuǎn)載于:https://www.cnblogs.com/cnbeir/archive/2012/05/05/2484608.html

總結(jié)

以上是生活随笔為你收集整理的PHP中数组的三种排序方法的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。