基礎算法(1):冒泡排序
阿新 • • 發佈:2018-09-03
一定的 fun 基礎算法 重復 基礎上 ray 感受 大小 思路
冒泡排序 是一種比較簡單的排序算法,其本質是相鄰的兩個元素進行大小比較,最終使得所有的元素形成從小到大或者從大到小的排列
算法原理
- 比較相鄰的元素,不相等,就進行交換
- 對所有的相鄰元素進行第1步的操作,第一輪比較下來,最大(小) 的元素排在了最尾部
- 相鄰的元素比較的次數在上一輪比較的基礎上減去1次,進入下一輪的比較,,重復第1,2步
- 最大(小),第二大(小),第三大(小)......的元素依次會拍到元素的最尾部
- 當比較次數為1的時候,執行完第1步,所有比較結束
冒泡排序是一種穩定的排序算法
代碼示例
<?php function bubbing_sort(array $arr) { // 統計需要排序的元素個數 $len = count($arr); // 控制進行幾輪比較 for($j = 1; $j < $len ;$j++) { // 相鄰的一組元素,兩兩之間需要比較的次數 for($i = 0 ; $i < $len-$j ;$i++) { // 元素的排列方向 從小到大或者從大到小 if($arr[$i] > $arr[$i+1]) { // 相鄰的兩個元素大小比較符合條件,兩兩交換位置 $temp = $arr[$i]; $arr[$i] = $arr[$i+1]; $arr[$i+1] = $temp ; } } } return $arr ; } $arr = [99,10,88,23,13,67]; var_dump(bubbing_sort($arr)); // output /*array (size=6) 0 => int 10 1 => int 13 2 => int 23 3 => int 67 4 => int 88 5 => int 99*/
冒泡排序的核心是相鄰元素之間的兩兩比較,比較完一輪,還有元素沒有比較完,進入下一輪的比較,直到所有的元素都按照一定的順序呈現出來.
PS : 要是沒有直觀的感受,可以裁剪出幾個小紙片,每個小紙片上寫上數字(相當於一個元素),將這些小紙片放在一塊按照冒泡排序實現思路進行比較.
基礎算法(1):冒泡排序