public class SelectionSort {
public static void main(String[] args) {
int[] arr = { 12, 2, 4, 43, 5 };
System.out.println("排序前:");
printArray(arr); //调用输出方法
selectionSort(arr); //进行排序
System.out.println("排序后:");
printArray(arr); //调用输出方法
}
//选择排序的实现
public static void selectionSort(int[] arr) {
for (int i = 0; i < arr.length - 1; i++) {// 做第i趟排序
int k = i;
for (int j = k + 1; j < arr.length; j++) {// 选最小的记录
if (arr[j] < arr[k]) {
k = j; // 记下目前找到的最小值所在的位置
}
}
// 在内层循环结束,也就是找到本轮循环的最小的数以后,再进行交换
if (i != k) { // 交换a[i]和a[k]
int temp = arr[i];
arr[i] = arr[k];
arr[k] = temp;
}
}
}
//输出方法
public static void printArray(int[] arr) {
System.out.print("[");
for (int i = 0; i < arr.length; i++) {
if (i == arr.length - 1) {
System.out.print(arr[i] + "]");
} else {
System.out.print(arr[i] + ",");
}
}
System.out.println();
}
}
public static void main(String[] args) {
int[] arr = { 12, 2, 4, 43, 5 };
System.out.println("排序前:");
printArray(arr); //调用输出方法
selectionSort(arr); //进行排序
System.out.println("排序后:");
printArray(arr); //调用输出方法
}
//选择排序的实现
public static void selectionSort(int[] arr) {
for (int i = 0; i < arr.length - 1; i++) {// 做第i趟排序
int k = i;
for (int j = k + 1; j < arr.length; j++) {// 选最小的记录
if (arr[j] < arr[k]) {
k = j; // 记下目前找到的最小值所在的位置
}
}
// 在内层循环结束,也就是找到本轮循环的最小的数以后,再进行交换
if (i != k) { // 交换a[i]和a[k]
int temp = arr[i];
arr[i] = arr[k];
arr[k] = temp;
}
}
}
//输出方法
public static void printArray(int[] arr) {
System.out.print("[");
for (int i = 0; i < arr.length; i++) {
if (i == arr.length - 1) {
System.out.print(arr[i] + "]");
} else {
System.out.print(arr[i] + ",");
}
}
System.out.println();
}
}