(一)选择排序

选择排序是一个简单直观的排序算法,无论什么数据使用选择排序时间复杂度都是O(n²).所以使用选择排序的时候,数组规模越小越好,唯一的好处可能就是不占用额外的内存空间吧.

1.排序过程
1)首先使用角标为0的元素依次和后面的角标对应的元素进行比较,第一次比较完角标为0对应的元素为最小(最大)值.
2)从角标为1的元素开始,再依次和后面角标对应的元素进行比较,第二次比较完角标为1处的元素就是次小(次大)值.
3)重复执行上述步骤…依次进行比较,就可以得到一个从小到大(从大到小)排序好的数组.

java list Integer选择排序法 java的选择排序_System

public class Sort {
	public static void main(String[] args) {
		int a [] = new int[]{16,10,5,30,50,20};
		//排序前,先把内容打印出来
		for (int i = 0; i < a.length; i++) {
			System.out.print(a[i] + " ");
		}
		System.out.println(" ");
		System.out.println("--------------------------------");		

		//选择法排序
	
		//第一步: 把第一位和其他所有位进行比较
		//如果发现其他位置的数据比第一位小,就进行交换
		
		for (int i = 1; i < a.length; i++) {
			if(a[i]<a[0]){   
				int temp = a[0];
				a[0] = a[i];
				a[i] = temp;
			}
		}
		//把内容打印出来
		//可以发现,最小的一个数,到了最前面
		for (int i = 0; i < a.length; i++) {
			System.out.print(a[i] + " ");
		}
		System.out.println(" ");
		
	
		//第二步: 把第二位的和剩下的所有位进行比较
		for (int i = 2; i < a.length; i++) {
			if(a[i]<a[1]){   
				int temp = a[1];
				a[1] = a[i];
				a[i] = temp;
			}
		}
		//把内容打印出来
		//可以发现,倒数第二小的数,到了第二个位置
		for (int i = 0; i < a.length; i++) {
			System.out.print(a[i] + " ");
		}
		System.out.println(" ");		
		System.out.println("--------------------------------");		

		//可以发现一个规律
		//移动的位置是从0 逐渐增加的
		//所以可以在外面套一层循环
		
		for (int j = 0; j < a.length-1; j++) {
			for (int i = j+1; i < a.length; i++) {
				if(a[i]<a[j]){   
					int temp = a[j];
					a[j] = a[i];
					a[i] = temp;
				}
			}
		}
		
		//把内容打印出来
		for (int i = 0; i < a.length; i++) {
			System.out.print(a[i] + " ");
		}
		System.out.println(" ");		
	}
}

输出结果如下所示:

java list Integer选择排序法 java的选择排序_i++_02