生活随笔
收集整理的這篇文章主要介紹了
排序算法小结
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
快速排序
十分常用的高效率的算法,其思想是:先選一個標尺,用它把整個隊列過一遍篩選,以保證其左邊的元素都不大于它,其右邊的元素都不小于它
function quickSort($arr){//獲取數組長度$length = count($arr);// 判斷長度是否需要繼續二分比較if($length <= 1){return $arr;}// 定義兩個空數組,用于存放和基準元素的比較后的結果$left = [];$right = [];// 遍歷數組for($i=1; $i < $length; $i++) {// 和基準元素作比較if($arr[$i] > $base) {$right[] = $arr[$i];}$left[] = $arr[$i];}
}// 然后遞歸分別處理left和right$left = quickSort($left);$right = quickSort($right);// 合并return array_merge($left,[$base],$right);
?
冒泡排序
思路:法如其名,就像冒泡一樣,每次從數組中冒出一個最大的數。
?
比如:2,4,1
?
第一次冒出4:2,1,4
?
第二次冒出2:1,2,4
?
function bubbleSort($arr){// 獲取數組長度$length = count($arr);// 第一層循環控制冒泡輪次for ($i=0; $i < $length-1; $i++) {// 內層循環控制從第0個鍵值和后一個鍵值比較,每次冒出一個最大的數for($k=0; $k < $length-$i; $k++) {if($arr[$k] > $arr[$k+1]){$tmp = $arr[$k+1];$arr[$k+1] = $arr[$k];$arr[$k] = $tmp;}}}return $arr;
}
選擇排序
?
思路:每次選擇一個相應的元素,然后將其放到指定的位置
?
function selectSort($arr){// 實現思路// 雙重循環完成,外層控制輪數,當前的最小值,內層控制比較次數// 獲取長度$length = count($arr);for($i=0; $i < $length - 1; $i++) {// 假設最小值的位置$p = $i;// 使用假設的最小值和其他值比較,找到當前的最小值for($j=$i+1; $j < $length; $j++) {// $arr[$p] 是已知的當前最小值// 判斷當前循環值和已知最小值的比較,當發下更小的值時記錄下鍵,并進行下一次比較if($arr[$p] > $arr[$j]) {$p = $j;// 比假設的值更小}}// 通過內部for循環找到了當前最小值的key,并保存在$p中// 判斷 日光當前$p 中的鍵和假設的最小值的鍵不一致增將其互換if($p != $i) {$tmp = $arr[$p];$arr[$p] = $arr[$i];$arr[$i] = $tmp;}}// 返回最終結果return $arr;
}
?
總結
以上是生活随笔為你收集整理的排序算法小结的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。