说说算法那些事-快速排序

快速排序(Quicksort)是对冒泡排序的一种改进。查看完整代码

1.算法思想:通过一个基准值把将要排序的元素分成两部分,左边的元素都小于基准值,右边的元素都大于基准值,然后再按此方法对这两部分元素分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序。

2.算法步骤:(1)、设置开始变量值i,j,初始化值为 i = 0,j = count -1;

(2)、一般以第一个元素作为基准值temp,从j元素开始向前搜索,即j--,找到小于temp的值array[j],然后在两个值互换array[i] = array[j];

(3)、从i元素开始向后搜索,即i++,找到大于temp的值array[i],然后将两值互换即array[j] = array[i],

(4)、将temp赋值到array[I],这样以后,temp左边值都小于temp,右边都大于temp,一次递归完成,然后左边 右边分成两部分,重复以上步骤。即可排成有序数组。

3.图解:

4.算法分析:

时间复杂度:最好的情况是 基准值是元素的中间值,时间复杂度为:O(nlog2n)(以2为底),最坏的情况是 基准值是最大或者最小值,时间复杂度为O(n2),平均时间复杂度:0(nlogn)。

空间复杂度:为O(log2n)(以2为底).

稳定性:.两个5的相对位置发生了改变,所是快速排序是一种不稳定排序。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 某次二面时,面试官问起Js排序问题,吾绞尽脑汁回答了几种,深感算法有很大的问题,所以总计一下! 排序算法说明 (1...
    流浪的先知阅读 1,208评论 0 4
  • 概述 排序有内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部...
    蚁前阅读 5,220评论 0 52
  • 概述:排序有内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部...
    每天刷两次牙阅读 3,743评论 0 15
  • 那是两条穿了肉色丝袜的腿。 这不禁让我想起母亲清晨站在镜子前,把头发梳得油亮说的话:这件裙子配黑色丝袜好像不...
    山羊_阅读 16,492评论 2 0
  • 不知道你是否有这样的经历,买回家的酱油、醋拧开盖子后,就要完成开瓶后的最后一个动作,把内置的塑料拉环拉开,这一动作...
    流动盛宴爱码士阅读 687评论 1 1