php 陣列(2)
阿新 • • 發佈:2018-11-21
陣列排序演算法
氣泡排序,是一種電腦科學領域的較簡單的排序演算法。它重複地訪問要排序的數列,一次比較兩個元素,如果他們的順序錯誤就把他們減緩過來。走訪數列的工作室重複的進行直到沒有再需要交換,也就是說該數列已經排序完成
思路:
比較相鄰的元素,如果第一個比第二個大,就交換他們兩個
對每一個相鄰元素做同樣的的工作,從開始第一對到結尾的最後一對,在這一點,最後的元素應該會是最大的數
針對所有的元素重複以上的步驟,除了最後一個
持續每次對越來越少的元素重複上面的步驟,直到沒有任何一對數字需要比較
$arr = array(1,5,3,6,2,,9,8,7,4);for($i = 0,$len = count($arr);$i < $len;$i++){ for($j = 0;$j < $len - 1 - $i;$j++){ if($arr[$j] > $arr[$j + 1]){ $temp = $arr[$j]; $arr[$j] = $arr[$j+1]; $arr[$j+1] = $temp; } } }
-----
選擇排序,是一種簡單直觀的排序演算法,它的工作原理是每一次從待排序的資料元素中選出最小(或最大)的一個元素,存放在序列的起始位置,直到全部待排序的資料元素排完,選擇排序是不穩定的排序方法(如:序列[5,5,3]第一次就將第一個[5]與[3]交換,導致第一個5移動到第二個5後面)
思路:
假設第一個元素為最小元素,記下下標
尋找右側剩餘的元素,如果有更小的重新記下最新的下標
如果有新的最小的,交換兩個元素
往右重複以上的步驟,知道元素本身是最後一個
$arr = array(1,5,3,6,2,,9,8,7,4); // 確定要交換多少次,一次只能找到一個最小的,需要找陣列長度對應的次數 for($i = 0,$len = count($arr);$i < $len;$i++){ // 假設當前第一個已經排好序 $min = $i; // 當前第一個數時最小的 // 比較當前元素與選定的最小的元素 for ($j = $i+ 1;$j < $len;$j++){ if($arr[$j] < $arr[$min]){ // 說明當前指定的 $min 不合適 $min = $j; } } // 交換當前選定的值與實際最小的元素值 if($min != $i){ $temp = $arr[$i]; $arr[$i] = $arr[$min]; $arr[$min] = $temp; } } echo '<pre>'; print_r($arr);
-----