1. 程式人生 > >php 陣列(2)

php 陣列(2)

陣列排序演算法

  氣泡排序,是一種電腦科學領域的較簡單的排序演算法。它重複地訪問要排序的數列,一次比較兩個元素,如果他們的順序錯誤就把他們減緩過來。走訪數列的工作室重複的進行直到沒有再需要交換,也就是說該數列已經排序完成

  思路:

    比較相鄰的元素,如果第一個比第二個大,就交換他們兩個

    對每一個相鄰元素做同樣的的工作,從開始第一對到結尾的最後一對,在這一點,最後的元素應該會是最大的數

    針對所有的元素重複以上的步驟,除了最後一個

    持續每次對越來越少的元素重複上面的步驟,直到沒有任何一對數字需要比較

$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);

 

 

 

 

 

 

 

 

 

 

 

 

-----