php实现 冒泡排序,插入排序,选择排序
冒泡排序
冒泡排序只会操作相邻的两个数据。每次冒泡操作都会对相邻的两个元素进行比较,看是否满足 大小关系要求。如果不满足就让它俩互换。一次冒泡会让至少一个元素移动到它应该在的位置, 重复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 协议》,转载必须注明作者和本文链接