主要思想是:每趟排序在当前待排序序列中选出关键码最小的记录,添加到有序序列中,选择排序比较独特的地方是:记录的移动次数少。
代码如下:
import org.junit.Test;
public class SimpleChoiceSort {
@Test
public void test() {
int[] arr = { 3, 6, 4, 2, 7, 1 };
simpleChoiceSort(arr);
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i] + " ");
}
}
public void simpleChoiceSort(int[] arr) {
int min;
for (int i = 0; i < arr.length - 1; i++) {
min = i;
// 从该元素之后进行遍历,每趟找出未排好序的序列中的最小值
for (int j = i + 1; j < arr.length; j++) {
if (arr[min] > arr[j]) {
min = j;
}
}
if (min != i) {
swap(arr, min, i);
}
}
}
private void swap(int[] arr, int min, int i) {
int temp = arr[min];
arr[min] = arr[i];
arr[i] = temp;
}
}