1.冒泡排序
冒泡排序(bubble sort)是一种交换排序,操作两个相邻的数据看大小是否满足大小关系要求,如不满足则交换他们的顺序 ,直到没有不满足的数据为止
代码如下:
function bubbleAscSort($arr){
$len = count($arr);
for ($i=0; $i < $len; $i++) {
$flag = false;//提前退出冒泡循环的标志
for ($j=0; $j <$length -$i - 1; $j++) {
if ($arr[$j] > $arr[$j+1]) {//交换位置
$tmp = $arr[$j];
$arr[$j] = $arr[$j+1];
$arr[$j+1] = $tmp;
$flag = true;
}
}
if (!$flag) break;//没有数据交换退出循环
}
return $arr;
}
2.选择排序
给定一个数组,从小到大排序首先找到数组中最小的那个元素,其次将它和数组中的第一个元素交换位置(如果第一个就是最小那么他就和自己交换),再次,在剩下的元素中找到最小元素将它与数组的第二个元素交换位置,如此往复直到将整个数组排序这种排序方法就叫做选择排序
代码如下:
function selectsort($arr){
$len = count($arr);
for ($i=0; $i <$len ; $i++) {
$min =$i;//将当前坐标定义为最小值下标
for ($j=$i+1; $j <$len; $j++) {
if ($arr[$min] > $arr[$j]) {
$min = $j;
}
}
//如果$min不等于$i说明找到最小值 交换他们的位置
if ($i != $min) {
$tmp = $arr[$i];
$arr[$i] = $arr[$min];
$arr[$min] = $tmp;
}
}
return $arr;
}
3.插入排序
循环数组,将元素插入到有序的元素中,使数组改变为我们要求的顺序即为插入排序
代码如下
function insertionsort($arr){
$len = count($arr);
if($len <= 1) return;
for ($i=1; $i < $len; $i++) {
$value = $arr[$i];
$j = $i-1;
for (; $j>=0 ; $j--) {
if ($arr[$j] > $value) {
$arr[$j+1] = $arr[$j];
}else{
break;
}
}
$arr[$j+1] = $value;
}
return $arr;
}
未完待更!
评论 (0)