思路:
每次遍历找到一个所有未排序项的最大或最小值,第一次循环将其与第一位交换位置,第二次将其与第二位交换位置,第三次将其与第三位交换位置,以此类推,最后所有项都会在相应位置上。
具体实现:
function selectSort(array){
let indexMax;
for(let i=0;i<array.length-1;i++){
indexMax = i;//设置记录最大值下标的变量,每次遍历先赋成i
for(let j=i;j<array.length;j++){ //筛选i后最大值,将其下标保存到indexMax中
if(array[j]>array[indexMax]){
indexMax = j;
}
}
if(i!==indexMax){
[array[i],array[indexMax]] = [array[indexMax],array[i]];//将寻找到的最大值与array[i]交换位置
}
}
return array;
}
特性:
时间复杂度:o(n2);
空间复杂度:o(1);
稳定性 :不稳定