十大排序算法

不要求多了,至少前面5中排序算法的原理、复杂度、实现必须要掌握。
冒泡排序
一般通过迭代来实现。
选择排序
一般通过迭代来实现。
插入排序
本质实际上是二分法,一般通过迭代来实现。
归并排序
执行流程:
- 不断地将当前序列平均分割成2个子序列,直到每个序列中只剩一个元素;
- 再不断将两个子序列按照某种排序规则合并成一个有序序列,直到只剩最终的一个有序序列。
一般通过递归来实现,具体见实例【力扣刷题】_148.排序链表。
快速排序
执行流程:
- 从无序序列中选择一个轴点元素privot,一般就选位置为0的元素;
- 将小于或等于privot的元素都放在privot前面,大于privot的元素都放在privot后面;
- 把privot及其前面的元素作为子序列1,privot后面的元素作为子序列2,分别对两个子序列重复上述步骤,直到子序列中只剩一个元素。
一般通过递归来实现,具体见实例【剑指刷题】_面试题40.最小的k个数。
堆排序
一般通过java工具类PriorityQueue来实现大根堆或小根堆,继而实现堆排序,具体见实例【剑指刷题】_面试题40.最小的k个数。