还是我们先进行思路整理:我们对int[] array = {3,1,4,2,5,6,};进行选择排序,个人认为选择排序就是冒泡排序的升级版,因为他保留了冒泡多趟对比的思路,每趟确定一个最值,冒泡每趟需要交换n次,而选择只需要交换一次.交换的是最大值,在循环内部进行最大值的索引,
第一趟比较 : 3,1,6,2,5,4
int maxIndex = 0;//最大值索引
第一次 : array[maxIndex] 和 3比较,如果array[maxIndex] < 3 则记录maxIndex = 0;
第二次 : array[maxIndex] 和 1比较,如果array[maxIndex] < 1 则记录maxIndex = 1;
第三次 : array[maxIndex] 和 1比较,如果array[maxIndex] < 1 则记录maxIndex = 1;
第四次 : array[maxIndex] 和 1比较,如果array[maxIndex] < 1 则记录maxIndex = 1;
第五次 : array[maxIndex] 和 1比较,如果array[maxIndex] < 1 则记录maxIndex = 1;
第二趟比较 : 1,3,2,5,4,6
第三趟比较 : 1,2,3,4,5,6
第四趟比较 : 1,2,3,4,5,6
第五趟比较
public static void main(String[] args) {
int[] array = {3,1,6,2,5,4};
int max = 0;
for (int i = 0; i < array.length; i++) {
if (max < array[i]) {
max = array[i];
}
}
System.out.println(max);
System.out.println("------------------");
for (int i = 0; i < array.length; i++) {
int maxIndex = 0;//-- 最大值索引
//-- -i是为了去掉已经确定的最大值
for (int j = 0; j < array.length - i; j++) {
if (array[maxIndex] < array[j]) {
maxIndex = j;
}
}
//-- 找到一个最大值的索引了.用这个索引的数和最后一个元素做交换
int temp = array[maxIndex];
array[maxIndex] = array[array.length - 1 - i];
//-- -1是最后一个元素减去,-i是去掉比较的最大值
array[array.length - 1 - i] = temp;
//-- 3 1 4 2 5 6
System.out.println(Arrays.toString(array));
}
}
}