【力扣刷题】_十大排序算法

十大排序算法

不要求多了,至少前面5中排序算法的原理、复杂度、实现必须要掌握。

冒泡排序

一般通过迭代来实现。

选择排序

一般通过迭代来实现。

插入排序

本质实际上是二分法,一般通过迭代来实现。

归并排序

执行流程:

  • 不断地将当前序列平均分割成2个子序列,直到每个序列中只剩一个元素;
  • 再不断将两个子序列按照某种排序规则合并成一个有序序列,直到只剩最终的一个有序序列。

一般通过递归来实现,具体见实例【力扣刷题】_148.排序链表

快速排序

执行流程:

  • 从无序序列中选择一个轴点元素privot,一般就选位置为0的元素;
  • 将小于或等于privot的元素都放在privot前面,大于privot的元素都放在privot后面;
  • 把privot及其前面的元素作为子序列1,privot后面的元素作为子序列2,分别对两个子序列重复上述步骤,直到子序列中只剩一个元素。

一般通过递归来实现,具体见实例【剑指刷题】_面试题40.最小的k个数

堆排序

一般通过java工具类PriorityQueue来实现大根堆或小根堆,继而实现堆排序,具体见实例【剑指刷题】_面试题40.最小的k个数