原地排序(Sorted in place)特指空间复杂度是 O(1) 的排序算法
稳定性——排序后值相等的元素间前后顺序不变
冒泡排序(Bubble Sort)
核心思想
- 只会操作相邻的两个数据
- 每次冒泡操作都会对相邻的两个元素进行比较,如果不满足大小关系则互换
- 一次冒泡会让至少一个元素移动到它应该在的位置,重复 n 次就完成了 n 个数据的排序
优化——当某次冒泡操作已无数据交换时,说明已达完全有序,不用继续执行后续的冒泡操作
插入排序(Insertion Sort)
核心思想——取未排序区间中的元素,在已排序区间中找到合适的插入位置将其插入,并保证已排序区间数据一直有序。重复这个过程,直到未排序区间中元素为空,算法结束
初始已排序区间只有一个元素即数组的第一个元素
选择排序(Selection Sort)
每次从未排序区间中找到最小的元素,将其放到已排序区间的末尾