算法图解 - 第2章 选择排序

选择排序

每次选出剩余元素中最大的或者最小放在最终排序的对应位置

eg:歌曲排序,播放次数越多的靠前。 每次找到播放次数最多的放在表中。找第一个需n次,找第二个需n-1次,以此直到找到最后一个

总结

需要检查的元素数`越来越少`

排序中每一轮会`把最大或最小`的数移到最前,
所以相互比较的次数每一轮都会`比前一轮少1次`。
依次 n-1,n-2,n-3,...1;

选择排序法把N个数通过N-1轮排序。
升序中大的数往前移,小的往后移。
降序中小的往前移,大的数往后移。

运行时间: O(n*n) = O(n²)

image
image

function insertSort( arr ){
	let len = arr.length;
	for(let i=1;i<len;i++){
		let temp = arr[i];
		let j = i-1;//默认已排序的元素
		//在已经排序好的队列进行从后到前的扫描
		while( j>=0 && arr[j] > temp ){
			//已排序的元素大于新元素,将该元素移动到下一个位置
			arr[j+1] = arr[j];
			j--;
		}
		arr[j+1] = temp;
	}	
	return arr;
}
let arr = [5,3,4,2,1];

console.log(  insertSort(arr)  );

posted @ 2020-06-04 18:48  邪儿莫  阅读(141)  评论(0编辑  收藏  举报