各种排序算法的js实现(从小到大排序)
选择排序
冒泡排序
快排
归并排序
参考文档
应用
合并两个有序数组
var A = [1, 2, 4, 7], B = [3, 5, 6, 8, 10, 12]; // C = [1, 2, 3, 4, 5, 6, 7, 8]。
// 合并方法一
function mergeSort(a, b){
// 插入排序
var i = 0; j = 0, arr = [];
while(i < a.length || j < b.length){
if(i === a.length){
arr.push(b[j]);
j++;
}else if(j === b.length){
arr.push(a[i]);
i++;
}else if(a[i] < b[j]){
arr.push(a[i]);
i++;
}else{
arr.push(b[j]);
j++
}
}
return arr;
}
mergeSort(A, B)
// 合并方法二:语法简化
function merge(a, b) {
var c = [], i = 0, j = 0, lenA = a.length, lenB = b.length;
while (i < lenA && j < lenB) {
c.push(a[i] < b[j] ? a[i++] : b[j++]);
}
if (i < lenA) {
[].push.apply(c, a.slice(i));
}
if (j < lenB) {
[].push.apply(c, b.slice(j));
}
return c;
}
var A = [1, 2, 4, 7], B = [3, 5, 6, 8, 10, 12]; // C = [1, 2, 3, 4, 5, 6, 7, 8]。
merge(A, B)
堆排序