java 选择排序
package order.selection.demo;
//选择排序
public class SelectionSort {
public static int[] arr = new int[] { 2, 4, 5, 1, 3, 8, 6, 9, 0, 7 };
public static void show(int[] arr, int iv, int k) {
// 查看结果
System.out.println();
for (int i : arr) {
if (iv == i) {
System.out.print(i + "i\t");
} else if (k == i) {
System.out.print(i + "k\t");
} else {
System.out.print(i + "\t");
}
}
System.out.println();
}
public static void main(String[] args) {
// 从大到小排序
int temp, k;
int sortCount = 0;// 遍历次数
int handleCount = 0;// 处理次数
for (int i = 0; i < arr.length - 1; i++) {
k = i;
for (int j = i + 1; j < arr.length; j++) {
if (arr[k] < arr[j]) {
k = j;
}
}
if (k != i) {
temp = arr[i];
arr[i] = arr[k];
arr[k] = temp;
handleCount++;
}
// show(arr);
sortCount++;
show(arr, arr[i], arr[k]);
}
// 查看结果
for (int i : arr) {
System.out.print(i + "\t");
}
System.out.println();
System.out.println("遍历次数: " + sortCount);
System.out.println("操作次数: " + handleCount);
}
// 9i 4 5 1 3 8 6 2k 0 7
//
// 9 8i 5 1 3 4k 6 2 0 7
//
// 9 8 7i 1 3 4 6 2 0 5k
//
// 9 8 7 6i 3 4 1k 2 0 5
//
// 9 8 7 6 5i 4 1 2 0 3k
//
// 9 8 7 6 5 4i 1 2 0 3
//
// 9 8 7 6 5 4 3i 2 0 1k
//
// 9 8 7 6 5 4 3 2i 0 1
//
// 9 8 7 6 5 4 3 2 1i 0k
// 9 8 7 6 5 4 3 2 1 0
// 遍历次数: 9
// 操作次数: 7
}