算法图解 - 第2章 选择排序
选择排序
每次选出剩余元素中最大的或者最小
放在最终排序的对应位置
eg:歌曲排序,播放次数越多的靠前。 每次找到播放次数最多的放在表中。找第一个需n次,找第二个需n-1次,以此直到找到最后一个
总结
需要检查的元素数`越来越少`
排序中每一轮会`把最大或最小`的数移到最前,
所以相互比较的次数每一轮都会`比前一轮少1次`。
依次 n-1,n-2,n-3,...1;
选择排序法把N个数通过N-1轮排序。
升序中大的数往前移,小的往后移。
降序中小的往前移,大的数往后移。
运行时间: O(n*n) = O(n²)
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) );
一步一叩首,今天的自己比昨天好一点就行,明天的自己需追寻