PHP排序

  1. 作者QQ:67065435 QQ群:821635552

  2. 本站内容全部为作者原创,转载请注明出处!

  3. php冒泡排序

    <?php
    //核心思想:从前到后,依次比较相邻的两个数,总是把较大的数后移,以将最大的数移动到最后,然后以此类推,将数据排列好。
    function pop_sort(array $arr)
    {
        $n = count($arr);
        if($n < 2){
            return $arr;
        }
        for ($i = 1; $i < $n; $i++) {
            for ($j = 0; $j < $n - $i; $j++) {
                if($arr[$j+1] < $arr[$j]){
                    $t = $arr[$j];
                    $arr[$j] = $arr[$j+1];
                    $arr[$j+1] = $t;
                }
            }
        }
        return $arr;
    }
    
  4. 选择排序

    <?php
    //核心思想:假设第一个数最小,然后依次和后面的数比较,遇到更小的数,则替代假设最小的数,然后以此类推,确定第二、第三...第N小的数。
    function chose_sort(array $arr)
    {
        $n = count($arr);
        if($n < 2){
            return $arr;
        }
        for($i = 0;$i < $n-1;$i++){
            $min_index = $i;
            for($j = $i+1;$j < $n;$j++){
                if($arr[$j] < $arr[$min_index]){
                    $min_index = $j;
                }
            }
            if($i != $min_index){
                $t = $arr[$i];
                $arr[$i] = $arr[$min_index];
                $arr[$min_index] = $t;
            }
        }
        return $arr;
    }
    
  5. php快速排序

    <?php
    //核心思想:假设数组某个数为数组的中间值,然后将比它小的数放在数组左边,将比它大的数放在数组右边,然后将分在左右的数组做相同递归处理,以得到最终结果。
    function quick_sort($arr)
    {
        $n = count($arr);
        if ($n < 2) {
            return $arr;
        }
        $base[0] = $arr[0];
        $leftArr = array();
        $rightArr = array();
        for ($i = 1; $i < $n; $i++) {
            if ($arr[$i] < $base[0]) {
                $leftArr[] = $arr[$i];
            } else {
                $rightArr[] = $arr[$i];
            }
        }
        $leftArr = quick_sort($leftArr);
        $rightArr = quick_sort($rightArr);
        return array_merge($leftArr, $base, $rightArr);
    }
    
Copyright © 豆包嘿嘿~ 2012-∞ 冀ICP备17033181号 all right reserved,powered by Gitbook修订: 21-07-07 12:25

results matching ""

    No results matching ""