对于一个数组int[] array = {9, 7, 5, 8, 4, 2, 1, 3}实现升序排序;
原理:第一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,然后再从剩余的未排序元素中寻找到最小元素,然后放到已排序的序列的末尾。以此类推,直到全部待排序的数据元素的个数为零
阶段1: 从0~n位置找出最小值位置,交换到0位置; {9, 7, 5, 8, 4, 2, 1, 3} >>> {1, 7, 5, 8, 4, 2, 9, 3}
阶段2: 从1~n位置找出最小值位置,交换到1位置; {1, 7, 5, 8, 4, 2, 9, 3} >>> {1, 2, 5, 8, 4, 7, 9, 3}
阶段3: 从2~n位置找出最小值位置,交换到2位置; {1, 2, 5, 8, 4, 7, 9, 3} >>> {1, 2, 3, 8, 4, 7, 9, 5}
阶段4: 从3~n位置找出最小值位置,交换到3位置; {1, 2, 3, 8, 4, 7, 9, 5} >>> {1, 2, 3, 4, 8, 7, 9, 5}
阶段5: 从4~n位置找出最小值位置,交换到4位置; {1, 2, 3, 4, 8, 7, 9, 5} >>> {1, 2, 3, 4, 5, 7, 9, 8}
阶段6: 从5~n位置找出最小值位置,交换到5位置; {1, 2, 3, 4, 5, 7, 9, 8}
阶段7: 从6~n位置找出最小值位置,交换到6位置; {1, 2, 3, 4, 5, 7, 9, 8} >>> {1, 2, 3, 4, 5, 7, 8, 9}
public class Code07_SelectionSort {
public static void main(String[] args) {
int[] arr = new int[]{9, 7, 5, 8, 4, 2, 1, 3};
System.out.println(Arrays.toString(arr));
selectionSort(arr);
System.out.println(Arrays.toString(arr));
}
public static void selectionSort(int arr[]) {
int n = arr.length;
for (int i = 0; i < n; i++) {
int minIndex = i;
for (int j = i + 1; j < n; j++) {
minIndex = arr[minIndex] > arr[j] ? j : minIndex;
}
swap(arr, i, minIndex);
}
}
public static void swap(int arr[], int i, int j) {
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}



