思路:
每次遍歷找到一個所有未排序項的最大或最小值,第一次循環將其與第一位交換位置,第二次將其與第二位交換位置,第三次將其與第三位交換位置,以此類推,最後所有項都會在相應位置上。
具體實現:
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);
穩定性 :不穩定