php算法

php快速排序算法

 

基本思想原理

快速排序(Quicksort)是对冒泡排序的一种改进。他的基本思想是:通过一趟排序将待排记录分割成独立的两部分,其中一部分的关键字均比另一部分记录的关键字小,则可分别对这两部分记录继续进行快速排序,整个排序过程可以递归进行,以达到整个序列有序的目的。

首先在数组中选择一个基准值

将数组中大于基准值的放在一边,小于基准值的放在另一边,基准值放在中间的位置

递归的对分列两边的数组进行排序

 //快速排序算法
    public function quickSort($array)
    {
        if (count($array) <= 1) {
            return $array;
        }
        $defaultValue = $array[0];
        $leftArray = [];
        $rightArray = [];
        for ($i = 1; $i < count($array); $i++) {
            if ($array[$i] > $defaultValue)
                $rightArray[] = $array[$i];
            else
                $leftArray[] = $array[$i];
        }
        $leftArray = self::quickSort($leftArray);
        $leftArray[] = $array[0];
        $rightArray = self::quickSort($rightArray);
        return array_merge($leftArray, $rightArray);
    }

 

php冒泡算法排序

基本原理

1.比较相邻的元素。如果第一个比第二个大,就交换他们两个。

2.对每一对相邻元素做同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数

3.针对所有的元素重复以上的步骤,除了最后一个

4.持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较

//冒泡算法
    public function bubbleAlgorithm($array)
    {
        if (!is_array($array)) {
            return false;
        }
        for ($i = 1; $i < count($array); $i++) {
            for ($j = 0; $j < count($array) - $i; $j++) {
                if ($array[$j] > $array[$j + 1]) {
                    $tmp = $array[$j];
                    $array[$j] = $array[$j + 1];
                    $array[$j + 1] = $tmp;
                }
            }
        }
        return $array;
    }

 

你可能感兴趣的:(php)