php实现快速排序算法

作者: 沙蒿同学 | 来源:发表于2018-12-01 22:48 被阅读4次

理解

每次排序的时候设置一个基准点,将小于等于基准点的数全部放到基准点的左边,将大于等于基准点的数全部放到基准点的右边。这样在每次交换的时候就不会像冒泡排序一样只能在相邻的数之间进行交换,交换的距离就大得多了。因此总的比较和交换次数就少了,速度自然就提高了。当然在最坏的情况下,仍可能是相邻的两个数进行了交换。因此快速排序的最差时间复杂度和冒泡排序是一样的,都是 O(N2),它的平均时间复杂度为 O (NlogN)。其实快速排序是基于一种叫做“二分”的思想。不稳定排序

代码实现

<?php
/**
 * Created by PhpStorm.
 * User: benny
 * Date: 18-11-20
 * Time: 下午5:01
 */
/**
 * 快速排序
 * @param $array
 * @param $i
 * @param $j
 */
function fast_sort(&$array,$i,$j){
    if ($i>$j){
        return;
    }
    $key = $array[$i]; //基数值
    $left = $i;         //左边哨兵$left
    $right = $j;        //右边哨兵$right

    while ($i!=$j){
        //往左边找第一个小于$key的值,直到找到
        while($array[$j]>=$key && $i<$j){
            $j--;
        }
        //往右边找第一个大于$key的值,直到找到
        while($array[$i]<=$key && $i<$j){
            $i++;
        }
        //两个都找到了,交换呗
        if ( $i<$j){
            $temp = $array[$i];
            $array[$i] = $array[$j];
            $array[$j] = $temp;
        }
        echo "操作:";
        print_r($array);
        echo '<br/>';
    }
    //执行下一趟快速排序
    $array[$left] = $array[$i];
    $array[$i] = $key;
    fast_sort($array,$left,$i-1);
    fast_sort($array,$i+1,$right);
}



$array = [6,12,9,2,2,33,822,12,4,22,3,2,1,7,9,8,7,7,7,7];
print_r($array);
echo "<br/>";

fast_sort($array,0,count($array)-1);
print_r($array);

相关文章

  • 七大排序算法之快速排序

    七大排序算法之快速排序 @(算法笔记)[排序算法, 快速排序, C++实现] [TOC] 快速排序的介绍: 快速排...

  • 数据结构&算法(一)

    一、Java实现快速排序算法 二、Java实现折半插入排序算法 三、Java实现冒泡排序算法

  • php实现快速排序算法

    理解 每次排序的时候设置一个基准点,将小于等于基准点的数全部放到基准点的左边,将大于等于基准点的数全部放到基准点的...

  • PHP - 快速排序

    使用PHP代码实现快速排序算法 快速排序是十分常用的高效率的算法,其思想是:先选一个标尺,用它把整个队列过一遍筛选...

  • 常用的排序算法

    常用的排序算法(PHP实现)_慕课手记

  • 手撕代码 之 快速排序

    1.实现快速排序算法 问题描述给定一个无序数组int[ ] a,使用快速排序算法进行排序。 解题思路对于快速排序,...

  • 快速排序算法的PHP与JQuery简单实现

    快速排序(以下简称快排)算法的PHP与JQuery简单实现 1.简介: 1.快排的本质是冒泡排序(Bubble S...

  • 三大排序算法

    归并排序[稳定的排序算法] 递归实现 非递归实现 快速排序[不稳定的排序算法] 堆排序[不稳定的排序算法]

  • 快速排序

    手写java版快速排序算法实现

  • 基础算法|快速排序

    快速排序(Quicksort),是对冒泡排序算法的一种改进。 快速排序算法通过多次比较和交换来实现排序,其排序流程...

网友评论

    本文标题:php实现快速排序算法

    本文链接:https://www.haomeiwen.com/subject/xildcqtx.html