氣泡排序
氣泡排序只會操作相鄰的兩個資料。每次冒泡操作都會對相鄰的兩個元素進行比較,看是否滿足 大小關係要求。如果不滿足就讓它倆互換。一次冒泡會讓至少一個元素移動到它應該在的位置, 重複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 協議》,轉載必須註明作者和本文連結