php实现冒泡和快速排序

2020-05-06  本文已影响0人  会飞的兔子zy

废话不说直接上代码

快速排序
随机获取一个key[一般是$arr[0]],通过反复对比 大于key的放到右边,小于key的放到左边,然后递归,最后把三个数组进行合并.

public function QuickSortA(array $arr) {
        $len = count($arr);
        if ($len < 2) {
            return $arr;
        }
        $key = $arr[0];
        $leftArr = $rightArr = array();
        for ($i = 1; $i < $len; $i++) {
            if ($arr[$i] < $key) {
                $leftArr[] = $arr[$i];
            } else {
                $rightArr[] = $arr[$i];
            }
        }
        //递归处理
        $leftArr = self::quickSortA($leftArr);
        $rightArr = self::quickSortA($rightArr);
        return array_merge($leftArr, array($key), $rightArr);
    }

冒泡排序
将值做反复比对,如果$arr[1] > $arr[2]那么就交换位置,每轮会得到一个最大数,就是冒泡.


    public function BubbleSortA(array $arr) {
        $len = count($arr);
        if ($len < 2) {
            return $arr;
        }
        for ($i = 0; $i < $len; $i++) {
            for ($j = 0; $j < $len - $i - 1; $j++) {
                if ($arr[$j] > $arr[$j + 1]) {
                    $temp = $arr[$j];
                    $arr[$j] = $arr[$j + 1];
                    $arr[$j + 1] = $temp;
                }
            }
        }
        return $arr;
    }
上一篇 下一篇

猜你喜欢

热点阅读