算法复习--选择排序

选择排序:每次都从剩下的没有排序的数组元素中找到最小的元素放在排序部分的最后,例如,第一次找出整个数组中的最小值,与第一个元素交换,第二次,从剩下的n-1个元素中选择出最小的元素,和第二个元素交换。。。。。。。从算法思想就能看出,选择排序是不稳定的,比如重复的元素中有一个在第一个,那么第一次排序,就可能将其替换到其他位置,导致相对顺序变化。

Java代码:

	public static void SelectSort(int R[]){
		int i=0,j=0,t=0,k=0,len=R.length;
		for(i=0;i<len-1;i++){
			k=i;
			for(j=i+1;j<len;j++){
				if(R[k]>R[j]){
					k=j;
				}
			}
			if(k!=i){
				t=R[i];R[i]=R[k];R[k]=t;
			}
		}
	}

时间复杂度:

最好情况下:交换0次,但是每次都要找到最小的元素,因此大约必须遍历N*N次,因此为O(N*N)。减少了交换次数! 
最坏情况下,平均情况下:O(N*N)

不稳定。

猜你喜欢

转载自blog.csdn.net/Diaoliangwang/article/details/38614079