美文网首页app开发
面试——快速排序总结

面试——快速排序总结

作者: 丑角的晨歌 | 来源:发表于2018-04-17 23:19 被阅读137次

优点:
增大了记录的比较和移动的距离,将关键字较大的记录从前面直接移动到后面,关键字较少的从后面直接移动到前面,减少了总的比较次数与移动交换次数

缺点:
最坏复杂度为O(n2)
不稳定

时间复杂度:
最好:O(nlog2n)
平均:O(nlog2n)
最坏:O(n2)

最好情况:
每次划分都把当前数组划分为长度相等的两个子数组
最坏情况:
每次划分都只让数组中的元素少1,此时复杂度为O(n2)

空间复杂度:
递归log2n次,每次消耗栈空间为常数,故空间复杂度为O(log2n)

稳定性:
当中枢元素与其他元素交换时可能会把前面元素的稳定性打乱,所以是不稳定的

优化:
1、随机下标或三数取中作为枢轴元素
2、划分的数组变小到一定程度时,改用插入排序

相关文章

  • ios各种排序算法

    最近把面试需要准备的基础算法总结一下,包括冒泡排序,选择排序,快速排序,插入排序。 冒泡排序(从小到大排):始终从...

  • 面试——快速排序总结

    优点:增大了记录的比较和移动的距离,将关键字较大的记录从前面直接移动到后面,关键字较少的从后面直接移动到前面,减少...

  • 程序员常见算法的那些事

    面试的时候经常会被问算法的事情,今天就这个问题查找了一些算法的总结! 算法一:快速排序算法 快速排序是由东尼·霍尔...

  • 算法

    十大经典排序算法(动图演示) 【数据结构】链表的原理及与其相关的常见面试题总结 一、排序算法 交换排序冒泡排序快速...

  • JAVA面试题:5分钟了解快速排序

    前言 快速排序是面试中经常会问到的一种排序算法,对比其他一些排序算法,快速排序的平均时间相对较少。 快速排序思想介...

  • 原生javascript实现简单的数据结构与算法

    最近面试被问到冒泡排序和快速排序,要求现场手撕代码。 一.冒泡排序 Chrome下的测试结果: 二.快速排序 找出...

  • 后端研发面试题目总结

    最近一段时间面试n多公司,总结算法题目如下。 一 1 将数组中奇数置前偶数置后 2快速排序 堆排序

  • 排序学习 - 为了面对算法面试(3)

    排序学习 - 为了面对算法面试(2) - 归并排序 5.快速排序:是对冒泡排序的一种改进。快速排序由C. A. R...

  • 桶排序与力扣(LeetCode) -164 最大间距

    在我的博客冒泡排序、插入排序、快速排序、堆排序、归并排序总结中介绍了几种经典的排序方法,其中快速排序、堆排序和归并...

  • 算法岗面试

    面试的是BAT中某家的算法岗 1.快速排序 快速排序由于排序效率在同为O(N*logN)的几种排序方法中效率较高,...

网友评论

    本文标题:面试——快速排序总结

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