排序算法-简单选择排序(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、移动次数较少,当每记录占用空间较多时,此方法比直接插入排序快。

原文地址:https://www.cnblogs.com/PeriHe/p/7975796.html