算法思想
- 冒泡排序(Bubble Sort) 循环比较 交换
- 选择排序 时间复杂度 o(n2) 稳定性好 好理解
- 插入排序 打扑克牌摸牌的时候按牌的大小整理牌
- 希尔排序(Shell Sort) 优先比较距离较远的元素
- 归并排序(Merge Sort)递归
- 快速排序(Quick Sort)快速排序应该算是在冒泡排序基础上的递归分治法
- 堆排序(Heap Sort)利用堆的概念来排序的选择排序
- 计数排序(Counting Sort)计数排序要求输入的数据必须是有确定范围的整数。
计数排序的核心是将输入的数据值转化为键存储。
理解循环 - 桶排序(Bucket Sort)利用了函数的映射关系,高效与否的关键就在于这个映射函数的确定。
什么时候最快(Best Cases):
当输入的数据可以均匀的分配到每一个桶中
什么时候最慢(Worst Cases):
当输入的数据分配到每一个桶中 -
基数排序(Radix Sort) MSD 从高位开始进行排序 LSD 从低位开始进行排序
基数排序:根据键值的每位数字来分配桶
计数排序:每个桶只存储单一键值
桶排序:每个桶存储一定范围的数值
js实现
const swap = function(arr, i, j) {
var temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
const merge = function(left, right)
{
var result = [];
while (left.length>0 && right.length>0) {
if (left[0] <= right[0]) {
result.push(left.shift());
} else {
result.push(right.shift());
}
}
while (left.length)
result.push(left.shift());
while (right.length)
result.push(right.shift());
return result;
}
const