前言
基本每个人入门数据结构和算法都是先经历过排序,今天就来讲解一下最基础的三个入门排序算法。分别是冒泡排序、选择排序和插入排序。
冒泡排序
思路:两两交换,小的往左边,大的往右边。
就是每趟过程把最大的数往右边靠,然后从剩下的数继续刚才的过程。
代码(冒泡排序)
1 | package sort; |
结果(冒泡排序)
选择排序
思路:每一次从待排序的数据元素种选出最小的元素,存放在数组的起始位置,知道全部排序完成
每次都选出最小的,然后跟待排序的第一个数交换位置,直到全部排序完成。
代码(选择排序)
1 | package sort; |
结果(选择排序)
插入排序
思路:跟打扑克牌一样。维持一个有序区,然后后面进来的数跟有序区比较,然后插入
代码(插入排序)
1 | package sort; |
结果(插入排序)
总结
- 这三个基础入门排序的时间复杂度都为O(N^2),空间复杂度都为O(1)。
- 冒泡排序和插入排序都是稳定性排序,选择排序不是稳定性排序。
- 本质上,冒泡排序的进阶是快速排序。
- 本质上,插入排序的进阶是希尔排序。