当前位置:科技动态 > PHP中的四种经典排序算法

PHP中的四种经典排序算法

  • 发布:2023-10-02 04:48

$arr=array(1,43,54,62, 21, 66,32,78,36,76,39); 函数 bubbleSort($arr) { $len=count($arr); //本层循环控制需要冒泡的轮数 for($i=1;$i<$len;$i++) { //这一层循环是用来控制每轮需要比较一个数的次数。 for($k=0;$k<$len-$i;$k++) { if($arr[$k]>$arr[$k+1]) { $tmp=$arr[$k+1]; $arr[$k+1]=$arr[$k]; $arr[$k]=$tmp; } } } 返回$arr; }

登录后复制

2.选择排序
代码实现:

函数 selectSort($arr) {
//双循环完成,外层控制轮数,内层控制比较次数
 $len=count($arr);
    for($i=0; $i<$len-1; $i++) {
        //先假设最小值的位置
        $p = $i;
         
        for($j=$i+1; $j<$len; $j++) {
            //$arr[$p] 是当前已知的最小值
            if($arr[$p] > $arr[$j]) {
            //比较,找到较小的,记录最小值的位置;并在下次比较时使用已知的最小值进行比较。
                $p = $j;
            }
        }
      //当前最小值位置已经确定并保存到$p中。如果发现最小值的位置与当前假设的位置$i不同,则可以互换位置。如果($p!= $i){
            $tmp = $arr[$p];
            $arr[$p] = $arr[$i];
            $arr[$i] = $tmp;
        }
    }
    //返回最终结果
    返回$arr;
}
登录后复制

3.插入排序
思路分析:在一组待排序的数字中,假设前面的数字已经是有序的,现在需要将第n个数字插入到前面有序的数字中,这n个数字也排列在命令。重复这个循环,直到一切都井然有序。
代码实现:

函数 insertSort($arr) {
    $len=count($arr);
    for($i=1, $i<$len; $i++) {
        $tmp = $arr[$i];
        //内循环控制、比较、插入
        for($j=$i-1;$j>=0;$j--) {
            if($tmp < $arr[$j]) {
                //发现插入的元素较小,交换位置,将后面的元素与前面的元素交换。
                $arr[$j+1] = $arr[$j];
                $arr[$j] = $tmp;
            } 别的 {
                //如果遇到不需要移动的元素,由于是已经排好序的数组,所以不需要再比较前面的了。
                休息;
            }
        }
    }
    返回$arr;
}
登录后复制

4.快速排序
思路分析:选择一个基准元素,通常是第一个元素或最后一个元素。通过一次扫描,将待排序的列分为两部分,一部分小于参考元素,另一部分大于或等于参考元素。此时,排序后基元素已处于正确位置,然后将分割后的两个部分以同样的方式递归排序。
代码实现:

函数快速排序($arr) {
    //首先判断是否需要继续$长度=计数($arr);
    如果($长度 <= 1){
        返回$arr;
    }
    //选择第一个元素作为基础
    $base_num = $arr[0];
    //遍历除了标尺之外的所有元素,按照大小关系放入两个数组中。
    //初始化两个数组
    $left_array = 数组(); //小于基线
    $right_array = 数组(); // 大于基线
    for($i=1; $i<$length; $i++) {
        if($base_num > $arr[$i]) {
            //放入左侧数组中
            $left_array[] = $arr[$i];
        } 别的 {
            //把它放在右边
            $right_array[] = $arr[$i];
        }
    }
    //然后分别对左右数组进行同样的排序过程并递归调用该函数
    $left_array = Quick_sort($left_array);
    $right_array = Quick_sort($right_array);
    //合并
    返回 array_merge($left_array, array($base_num), $right_array);
}
登录后复制

以上是PHP中四种经典排序算法的详细介绍。更多相关内容请关注其他相关文章!

相关文章