冒泡排序(相当于排身高):
1.概念:通过重复比较相邻元素并交换位置,使最大元素逐步 "浮" 到数组末端。
2.特点:
(1)时间复杂度:O (n²);
(2)空间复杂度:O (1);

(3)稳定性:稳定;
(4)适用于小规模数据或几乎有序的数据。
3.字符含义:n表示数组长度,n-1表示此次排序需要排几轮,n-i-1表示每轮排序需要比较几次(一比较就交换数据)
4.代码实现:
选择排序 (相当于打擂台,输的人一直打,直到所有人都上过场):
1.概念:每次从待排序部分找到最小元素,与待排序部分的第一个元素交换位置。(第一轮找到最小的放在第一位,第二轮找到剩余部分最小的放在第二位......)。
2.特点:
(1)时间复杂度:O (n²);
(2)空间复杂度:O (1);
(3)稳定性:不稳定;
(4)交换次数少(n-1次),适用于数据移动成本较高的场景。(一轮比完才交换数据)
3.代码实现:

快速排序(立标杆):
1.概念:采用分治法,选择一个基准元素,将数组分为两部分,左部分小于基准,右部分大于基准,然后递归排序两部分。
2.特点:
(1)时间复杂度:平均 O (nlogn),最坏 O (n²);
(2)空间复杂度:O (logn);
(3)稳定性:不稳定;
(4)实际应用中性能优秀,适用于大规模数据。
3.代码实现:


插入排序(相当于整理扑克牌):
1.概念:将未排序的元素逐个插入到已排序序列的适当位置
2.特点:
(1)时间复杂度:O (n²)(最坏和平均情况),最好情况为 O (n)(已排序数组)
(2)空间复杂度:O (1)(只需要一个临时变量)
(3)稳定性:稳定(相等元素的相对顺序不会改变)
(4)适用场景:
a.小规模数据排序;
B.部分有序的数据(接近有序时效率很高);
c.数据增量式插入场景(如实时数据排序).
3.代码实现:
