/*
选择排序与冒泡排序相比,比较次数相同,但交换次数明显减少,说明交换更有效率。
*/
public class 选择排序 {
public static void main(String[] args) {
// 静态初始化一个int数组
int[] array = {15,7,3,12,6,9,8};
// 采用选择排序法对其进行排序
int count1 = 0; //为了统计对比次数,打标记
int count2 = 0; //为了统计交换次数,打标记
for (int i = 0; i < array.length-1; i++) {
//假设首位元素就是最小的
int min = i;
for (int j = i + 1; j < array.length; j++) {
// 统计比较次数
count1++;
//如果一个元素比假设最小的数还小,就把更小的元素的下标赋值给那个假设的最小元素
if (array[j] < array[min]){
min = j;
}
}
//如果min的值不等于i说明最初的假设不成立,有更小的数,需要交换
if (min != i){
int temp = array[min];
array[min] = array[i];
array[i] = temp;
// 统计交换次数
count2++;
}
}
System.out.println("比较次数:" + count1);
System.out.println("交换次数:" + count2);
// 排序后对数组进行遍历
for (int i = 0; i < array.length; i++) {
System.out.print(array[i] + " ");
}
}
}