排序算法

冒泡

        var arr = [1,4,5,2,1,7,6,8,3]
	for (var i=0; i<arr.length; i++) {
		for(var j=0; j<arr.length-i-1; j++) {
			if(arr[j] > arr[j+1]) {
				var flag = arr[j]
				arr[j] = arr[j+1]
				arr[j+1] = flag 
			}
		}
	}    

  归并(最优)

//先拆分,在合并
//拆分为不可在拆分时,再合并

var arr = [55,3,5,7,2,24,587,654,123,15,1,51,321,654,5,12,2,15,1,2,21]
//拆分
function mergeSort(arr) {
	if(arr.length==1) {
		return arr
	};
	let middle = Math.floor(arr.length/2);
	let left = arr.slice(0,middle);
	let right = arr.slice(middle);
	return merge(mergeSort(left),mergeSort(right));
}
//合并
function merge(left,right) {
	var res = []
	while (left.length && right.length) {
		if(left[0]>right[0]) {
			res.push(right.shift());
		}else {
			res.push(left.shift());
		}
	}
	return res.concat(left).concat(right)
}
console.log(mergeSort(arr))

  

原文地址:https://www.cnblogs.com/cq-lcq/p/8474250.html