关闭

快速排序(Quick sort)

标签: 排序算法
264人阅读 评论(0) 收藏 举报
分类:

基本思想 将一个将要排序的数据分割成独立的两部分,其中的一部分的所有数据都要比另外一部分的所有数据要小。之后再对这两部分分别继续递归地执行相同的方式直到排序完成。

如果快速排序处在最坏情况下的话,其时间复杂度和冒泡排序相同。O(n2)

平均的性能而言,其查找速度的时间复杂度为O(nlogn),是处在几种排序算法中效率最高的。


其采用的核心思想 分治法

1 问题分解为规模更小的子问题。

2 这些子问题逐个击破。

3 将解决掉的子问题合并最终得出问题的解。


分治法和递归经常同时应用在算法的设计中。



算法原理 将要排序的数组中任意选取一个数据(通常是数组的第一个数),将比此数小的放到其左边,然后再将比其大的数放置其右边。然后对得出的左右两个结果再继续重复执行此算法直到全数组排序完成。


具体实现方式  1 取出对比值(一般为数组的第一个值) 

                        2 先从数组的后边往前遍历寻找比对比值小的数,找到的话将找到的数的位置和对比值对换。

                        3 从数组的前边往后遍历寻找比对比值大的数,找到的话将找到的数的位置和对比值对换。

                        4 将数组内的值全部对比一次从而根据对比值分出两个部分。

                        5  之后再对分出的两个部分在进行第一步到第四步的操作。


C语言代码实现如下




0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:6670次
    • 积分:183
    • 等级:
    • 排名:千里之外
    • 原创:12篇
    • 转载:0篇
    • 译文:0篇
    • 评论:1条
    最新评论