說明
- 時間復雜度指的是一個算法執行所耗費的時間
- 空間復雜度指運行完一個程序所需內存的大小
- 穩定指,如果a=b,a在b的前面,排序后a仍然在b的前面
- 不穩定指,如果a=b,a在b的前面,排序后可能會交換位置
JS選擇排序
原理
首先從原始數組中找到最小的元素,並把該元素放在數組的最前面,然后再從剩下的元素中尋找最小的元素,放在之前最小元素的后面,知道排序完畢。
時間復雜度,空間復雜度,穩定性
- 平均時間復雜度O(n*n)
- 最好情況O(n*n)
- 最差情況O(n*n)
- 空間復雜度O(1)
- 穩定性:不穩定
選擇排序的寫法
var example=[8,94,15,88,55,76,21,39];
function selectSort(arr){
var len=arr.length;
var minIndex,temp;
console.time('選擇排序耗時');
for(i=0;i<len-1;i++){
minIndex=i;
for(j=i+1;j<len;j++){
if(arr[j]<arr[minIndex]){
minIndex=j;
}
}
temp=arr[i];
arr[i]=arr[minIndex];
arr[minIndex]=temp;
}
console.timeEnd('選擇排序耗時');
return arr;
}
console.log(selectSort(example));
解析
minIndex始終保存着最小值的位置的索引,隨着i的自增,遍歷的數組長度越來越短,直到完成排序。