十大排序算法基础篇 (适用于大脑短路迅速回想--“破釜沉舟”之人)
文前声明
不用代码块的目的是希望各位读者或者将来的我看完后能再一次手动打出代码 而不是Ctrl C+Ctrl V
共勉 -_-
关于排序的稳定性解释:
- 稳定排序:如果 a 原本在 b 的前面,且 a == b,排序之后 a 仍然在 b 的前面,则为稳定排序。
- 非稳定排序:如果 a 原本在 b 的前面,且 a == b,排序之后 a 可能不在 b 的前面,则为非稳定排序。
其他解释:
- 原地排序:原地排序就是指在排序过程中不申请多余的存储空间,只利用原来存储待排数据的存储空间进行比较和交换的数据排序。
- 非原地排序:需要利用额外的数组来辅助排序。
冒泡排序(Bubble Sort)
重复地遍历过要排序的数列,一次比较两个元素,如果它们的顺序错误就把它们交换过来,遍历数列的工作是重复地进行比较和交换直到没有再需要交换的情况或者到数组末尾
时间复杂度:O(n²)
空间复杂度:O(1)
稳定排序
原地排序
优质的文章讲解:冒泡排序
选择排序(Selection Sort)
先在未排序序列中找到最小(大)元素,存放到序列的起始位置,再从元素中继续寻找最小(大)元素放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。
时间复杂度:O(n²)
空间复杂度:O(1)
非稳定排序
原地排序
优质的文章讲解: