选择法排序的思路: 假设有N个数字进行比较排序。
1.把第1位和后面的所有数据进行比较,如果比第1位小的,就与第1位交换位置。(比较次数为:N-1)。
2.把第2位和后面的所有数据进行比较,如果比第2位小的,就与第2位交换位置。(比较次数为:N-2)。
3.把第3位和后面的所有数据进行比较,如果比第3位小的,就与第3位交换位置。(比较次数为:N-3)。
······ ······
N-1.把第N-1位和第N位数据进行比较,如果比第N-1位小的,就与第N-1位交换位置。(比较次数为:N-(N-1))。
则通过上述分析:选择排序需要两层循环,第一层循环为N-1次,第二层循环为N-(N-1)次。
java核心代码如下:
int[] a = { 18, 62, 68, 82, 65, 9, 19, 18 }; //声明一个int类型的数组,并进行赋值
int tempa; //声明一个int类型的变量
for (int j = 0; j < a.length - 1; j++) { //第一层循环:循环起始:j=0,循环结束:j=(a.length-1)-1,共循环a.length-1-0次
for (int i = j + 1; i < a.length ; i++) { //第二层循环:循环起始:i=j+1,循环结束:i=a.length-1,共循环a.length-(j+1)次
if (a[j] > a[i]) { //如果当前循环变量大于后面的循环变量,那么将它们互换位置
tempa = a[j];
a[j] = a[i];
a[i] = tempa;
}
}
}
for (int i = 0; i < a.length; i++) { //循环打印a数组
System.out.println(a[i]);
}
输出结果为:
9
18
18
19
62
65
68
82