php實現 氣泡排序,插入排序,選擇排序

jiangjun發表於2021-03-23

氣泡排序

氣泡排序只會操作相鄰的兩個資料。每次冒泡操作都會對相鄰的兩個元素進行比較,看是否滿足 大小關係要求。如果不滿足就讓它倆互換。一次冒泡會讓至少一個元素移動到它應該在的位置, 重複n次,就完成了n個資料的排序工作。

$array = [5,4,6,9,1,4,4,9];
for ($i=0; $i<count($array); $i++) {
    $flag = true;
    for($j=0; $j<count($array)-$i-1; $j++) {
        $m = $array[$j];
        $n = $array[$j+1];
        if ($m>$n) {
            $array[$j] = $n;
            $array[$j+1] = $m;
            $flag = false;
        }
    }

    if($flag==true) {
        break;
    }

}

插入排序

插入排序,把陣列分為兩部分,已排部分和未排部分。初始已排部分是陣列的第一個元素,然後迴圈陣列未排部分,和已排部分逐個比較,插入到合適的位置。未排部分迴圈完,演算法結束。

$array = [5,4,6,9,1,4,4,9];
for ($i=1; $i<count($array); $i++) {
       $m = $array[$i];
       for ($j=$i;$j>=0; $j--) {
            if($array[$j]>$m) {
                $array[$j+1] = $array[$j];
                $array[$j] = $m;
            }
       }
}

選擇排序

選擇排序演算法的實現思路有點類似插入排序,也分已排序部分和未排序部分。但是選擇排序每次 會從未排序部分中找到最大的元素,將其放到已排序部分的末尾。

$array = [5,4,6,9,1,4,4,9];
for ($i=0; $i<count($array); $i++) {
  $m = $i;
  for($j=$i+1; $j<count($array); $j++){
  if($array[$m]>$array[$j]) {
  $m = $j;
  }
 }
 $n = $array[$i];
  $array[$i] = $array[$m];
  $array[$m] = $n;

}
本作品採用《CC 協議》,轉載必須註明作者和本文連結

相關文章