选择排序的思想:
(1)从数组的开头起,以第一个元素作为初始比较对象,遍历整个数组,选择出最小的元素放在数组的第一个位置
(2)然后再从第二个元素开始,以第二个元素作为初始比较对象,遍历未知顺序的数组部分,选择出最小的元素放在数组的第二个位置
(3)对后面的元素分别重复上述步骤,直到所有的数据完成排序
选择排序的时间复杂度和空间复杂度:
(1)最优情况下和最差情况下的事件复杂度均为O(n^2);平均时间复杂度为O(n^2)
(2)空间复杂度为O(1)
实现代码:
function selectSort(arr){
var len=arr.length;
var minInd; //用于存放最小元素的索引值
var tmp; //用于存放待交换的元素
for(var i=0;i<len;i++){
minInd=i;
for(var j=i+1;j<len;j++){
if(arr[j]<arr[minInd]){
minInd=j;
}
}
if(minInd !=i){ //每轮比较后,如果最小值对应的索引不是i,则交换索引号分别为i和minInd的两个元素
tmp=arr[i];
arr[i]=arr[minInd];
arr[minInd]=tmp;
}
}
return arr;
}
测试结果: