排序算法
文章平均质量分 62
喜欢敲代码的Apollo
应届毕业生,蚂蚁金服JAVA后端工程师,欢迎小伙伴们一起交流!
展开
-
PriorityQueue优先级队列用法
用法先说结论,JAVA中默认是小根堆,即小的在堆顶(poll时小的出去)接下来看下默认的最小堆写法PriorityQueue<Integer> queue = new PriorityQueue<Integer>(new Comparator<Integer>(){ @Override public int compare(Integer o1, Integer o2){ return o1 < o2 ? -1 : 1; // 最小优先队列,直接 re原创 2021-02-08 12:58:26 · 6258 阅读 · 0 评论 -
快速排序的时间复杂度和空间复杂度
我们来分析一下快速排序法的性能。快速排序的时间性能取决于快速排序递归的深度,可以用递归树来描述递归算法的执行情况。如图9‐9‐7所示,它是{50,10,90,30, 70,40,80,60,20}在快速排序过程中的递归过程。由于我们的第一个关键字是50,正好是待排序的序列的中间值,因此递归树是平衡的,此时性能也比较好。空间复杂度,主要是递归造成的栈空间的使用,最好情况,递归树的深度为logn其空间复杂度也就为 O(logn),最坏情况,需要进行n‐1递归调用,其空间复杂度为O(原创 2021-02-07 22:43:18 · 15577 阅读 · 0 评论 -
冒泡排序
冒泡排序算法原理比较相邻的两个元素,如果前者比后者大(反之倒序),则交换。对每一对相邻元素做同样的工作,从开始第一对到结尾的最后一对。针对所有的元素重复以上的步骤。持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。例:给出数列{9,6,1,3,5}先排数字9,以此比较与交换 然后是数字6 数字1比3小,3比5小 ,所以5不动以此类推1,3不动代码:#include<iostream>void Bubble_原创 2021-02-07 23:32:34 · 9895 阅读 · 0 评论 -
十大经典排序算法总结
十种常见排序算法可以分为两大类:非线性时间比较类排序:通过比较来决定元素间的相对次序,由于其时间复杂度不能突破O(nlogn),因此称为非线性时间比较类排序。线性时间非比较类排序:不通过比较来决定元素间的相对次序,它可以突破基于比较排序的时间下界,以线性时间运行,因此称为线性时间非比较类排序。各排序算法复杂度及稳定性:相关概念稳定:如果a原本在b前面,而a=b,排序之后a仍然在b的前面。不稳定:如果a原本在b的前面,而a=b,排序之后 a 可能会出现在 b 的后面。时间复杂度:1.时原创 2021-02-07 23:40:50 · 19334 阅读 · 1 评论