排序算法-简单选择排序(javascript)
思想:每一趟从待排序记录中选择最小的,按顺序放在已排好序的序列最后,直到排完为止。
function selectSort(arr){
let k=0;
let t=0;
for(let i=0;i<arr.length;i++){ //选择出最小的
k=i;
for(let j=i+1;j<arr.length;j++){
if(arr[j]<arr[k]){
k=j; //k指向此趟排序最小的
}
}
if(k!=i){ //交换
t=arr[i];
arr[i]=arr[k];
arr[k]=t;
}
}
return arr;
}
时间复杂度
简单选择排序过程中,所需进行记录移动次数较少。最好情况:正序。不移动。最坏情况:逆序。移动3(n-1)次。
无论记录初始序列如何,所需进行的关键词的比较次数相同。都为n^2/2。因此时间复杂度为O(n^2)。
空间复杂度
同冒泡排序一样,只有两个记录交换时需要一个辅助空间。所以空间复杂度为O(1)。
特点
1、以交换记录来实现最小记录到位,是不稳定的。
2、可用于链式结构。
3、移动次数较少,当每记录占用空间较多时,此方法比直接插入排序快。

浙公网安备 33010602011771号