冒泡排序
在未排序序列中从后往前逐个比较相邻的两个元素,将最小的元素交换到开头
算法 | 最好情况 | 平均情况 | 最坏情况 | 空间复杂度 | 稳定性 |
---|---|---|---|---|---|
冒泡排序 | O(n) | O(n2) | O(n2) | O(1) | 稳定 |
1 | function bubbleSort(array) { |
选择排序
在未排序序列中选择最小元素,交换到开头
算法 | 最好情况 | 平均情况 | 最坏情况 | 空间复杂度 | 稳定性 |
---|---|---|---|---|---|
选择排序 | O(n2) | O(n2) | O(n2) | O(1) | 不稳定 |
1 | function selectionSort(array) { |
插入排序
在已排序序列中寻找正确位置插入当前元素
算法 | 最好情况 | 平均情况 | 最坏情况 | 空间复杂度 | 稳定性 |
---|---|---|---|---|---|
插入排序 | O(n) | O(n2) | O(n2) | O(1) | 稳定 |
1 | function insertionSort(array) { |
快速排序
找一个基准,小的放左边、大的放右边,然后都递归
算法 | 最好情况 | 平均情况 | 最坏情况 | 空间复杂度 | 稳定性 |
---|---|---|---|---|---|
快速排序 | O(n log n) | O(n log n) | O(n2) | O(log n) | 不稳定 |
1 | function quickSort(array) { |
归并排序
“分”:将一个数组反复二分为两个小数组,直到每个数组只有一个元素;“治”:从最小数组开始,两两按大小顺序合并
算法 | 最好情况 | 平均情况 | 最坏情况 | 空间复杂度 | 稳定性 |
---|---|---|---|---|---|
归并排序 | O(n log n) | O(n log n) | O(n log n) | O(n) | 稳定 |
1 | function mergeSort(array) { |