选择排序
选择排序是一种简单直观的排序算法。
原理
第一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,然后再从剩余的未排序元素中寻找到最小(大)元素,然后放到已排序的序列的末尾。依次类推完成整个数组的排序。
数组 arr = [4,1,6,3,5,2] 进行选择排序。首先遍历一次数组找出最小值 1 ,放在首位。然后遍历第二次找出次小值 2 放在第二位,接着遍历排序,直到排完这个数组。
代码实现
Array.prototype.selectionSort = function(){
for(var i = 0; i < this.length-1; i++){
var minIndex = i
for( var j = i ; j < this.length; j++){
if( this[j] < this[minIndex] ){
minIndex = j;
}
}
if(minIndex !== i){
[ arr[i], arr[minIndex] ] = [ arr[minIndex], arr[i] ]; //交换位置
}
}
}
var arr = [4,1,6,3,5,2];
arr.selectionSort();
console.log(arr); // [1, 2, 3, 4, 5, 6]
时间复杂度和稳定性
-
选择排序的时间复杂度是O(n^2);
-
选择排序是不稳定的排序算法;