java 实现 SelectSort 选择排序算法详解( 二 )

测试测试代码【java 实现 SelectSort 选择排序算法详解】List<Integer> list = RandomUtil.randomList(5);System.out.println("开始排序:" + list);SortHelper.select(list);System.out.println("完成排序:" + list);测试日志日志如下:
开始排序:[6, 11, 79, 77, 50]完成排序:[6, 11, 50, 77, 79]复杂度与稳定性从代码中可以看出一共遍历了n + n-1 + n-2 + … + 2 + 1 = n * (n+1) / 2 = 0.5 * n ^ 2 + 0.5 * n,那么时间复杂度是 O(N^2) 。
所以性能还是比较差的,一般不建议使用 。
因为在无序部分最大元素和有序部分第一个元素相等的时候,可以将无序部分最大元素放在前面,所以选择排序是稳定的 。
开源地址为了便于大家学习,上面的排序已经开源,开源地址:

https://github.com/houbb/sort
欢迎大家 fork/star,鼓励一下作者~~
小结快速排序之所比较快,因为相比冒泡排序,每次交换是跳跃式的 。
每次排序的时候设置一个基准点,将小于等于基准点的数全部放到基准点的左边,将大于等于基准点的数全部放到基准点的右边 。这样在每次交换的时候就不会像冒泡排序一样每次只能在相邻的数之间进行交换,交换的距离就大的多了 。
只能说,分治算法,永远滴神!
希望本文对你有帮助,如果有其他想法的话,也可以评论区和大家分享哦 。
各位极客的点赞收藏转发,是老马持续写作的最大动力!




推荐阅读