PHP經典四種排序演算法重整理 注釋有詳解

2021-07-24 19:00:44 字數 1546 閱讀 9994

/* 冒泡演算法:結果從小到大,規則類似波浪推動的沙灘,先初始閾值為 0,初始第一次波浪之後,如果發現有左值比右邊的大,就改變閾值並且完成波浪推動,重新初始化閾值為0,如此往復,直到沒有閾值改變的情況出現,說明沙灘平滑,閾值無需再改,無需推動波浪了。

* @para $arr 傳入進去排序的陣列

* @return $newarr 排序之後的陣列

*/function maopao($arr)

}if($flag == 0)

}return $arr;

}/**快速排序:通過遞迴來實現,遞迴發生的子規則是:以第乙個元素為基,比基數大的過濾到新生為左的陣列,比基數小的過濾到新生為右的陣列----遞迴呼叫該規則一直到子底層,然後開始回層合併(左陣列,基數,右陣列)

* @param $arr

* @return array

*/function quicksort($arr)

//選擇第乙個元素作為基準

$base_num = $arr[0];

//遍歷除了標尺外的所有元素,按照大小關係放入兩個陣列內

//初始化兩個陣列

$left_array = array(); //小於基準的

$right_array = array(); //大於基準的

for($i=1; $i<$length; $i++) else

}//再分別對左邊和右邊的陣列進行相同的排序處理方式遞迴呼叫這個函式

$left_array = quick_sort($left_array);

$right_array = quick_sort($right_array);

//合併

return array_merge($left_array, array($base_num), $right_array);

}/**插入排序(蠕蟲排序):初始化以陣列中第乙個元素為【既定結果陣列】中的乙個元素,然後取【既定結果陣列】之後的值在【既定結果陣列】中從末尾向頭部開始比較,如果該值沒有尾部的值大,就模擬蠕動,使該值向【既定結果陣列】頭部前進再次與左鄰的元素值比較,如此往復,直到碰到比該值小的存在才停止蠕動;;迴圈呼叫該規則,直到所有元素蠕動一遍完成排序。

* @param $arr

* @return mixed

*/function insertsort($arr)

else }}

return $arr;

}/**選擇排序:有著列舉思想,虛擬該陣列為兩部分,初始第一部分陣列只有乙個元素(隨外迴圈,不斷增大),不停列舉第二部分陣列元素(隨外迴圈,不斷減小)中的最小值與第一部分陣列最後乙個元素進行換位,換位結束則排序完成。

* @param $arr

* @return mixed

*/function selectsort($arr)

}//已經確定了當前的最小值的位置,儲存到$p中。如果發現最小值的位置與當前假設的位置$i不同,則位置互換即可。

if($p != $i)

}//返回最終結果

return $arr;

}

經典演算法 C 四種排序演算法

經典演算法 c 四種排序演算法 氣泡排序 using system namespace bubblesorter public class mainclass bubblesorter sh new bubblesorter sh.sort iarrary for int m 0 m iarrary...

經典演算法 C 四種排序演算法

氣泡排序 using system namespace bubblesorter public class mainclass bubblesorter sh new bubblesorter sh.sort iarrary for int m 0 m iarrary.length m consol...

php四種基礎排序演算法

氣泡排序法 function bubblesort array 選擇排序法 function selectsort array temp array i array i array minvalindex array minvalindex temp 插入排序法 function insertsor...