经典排序算法——选择排序

选择排序

第1趟,在待排序记录array[0]~array[array.lenght-1]中选出最小的记录,将它与array[0]交换;第2趟,在待排序记录array[1]~array[array.lenght-1]中选出最小的记录,将它与array[1]交换;以此类推,第i趟在待排序记录array[i]~array[array.lenght-1]中选出最小的记录,将它与array[i]交换,使有序序列不断增长直到全部排序完毕。

时间复杂度:O(n^2)。

因为有跳跃式的比较和交换,所以这个算法不稳定。

让我门来分析一下下面的例子:


我们用 java 来实现一下这个算法

public static void selectSort(int[] array){
		int temp = 0;
		int minIndex = 0;
		for(int i = 0;i < array.length;i++){//比较的趟数
			minIndex = i;
			for(int j = i+1;j < array.length;j++){//每次比较它前面的都已经排好序了,在未排好序的值里面找出最小值,赋给最前面的额那个数。
				if(array[minIndex] > array[j]){
					temp = array[minIndex];
					array[minIndex] = array[j];
					array[j] = temp;
				}
			}
		}
	}

测试:

	public static void main(String[] args){
		int[] array = {23,31,12,21,3,1,5};
		selectSort(array);
		show(array);	
	}
结果:1 3 5 12 21 23 31 

猜你喜欢

转载自blog.csdn.net/Alyson_jm/article/details/80372225