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;
}

未完待更!

Last modification:March 18th, 2020 at 11:14 pm