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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

排序算法小结

發布時間:2024/9/19 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 排序算法小结 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

快速排序

十分常用的高效率的算法,其思想是:先選一個標尺,用它把整個隊列過一遍篩選,以保證其左邊的元素都不大于它,其右邊的元素都不小于它

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; }

?

總結

以上是生活随笔為你收集整理的排序算法小结的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。