不断选择剩余元素中的最小者,外循环用于交换元素并记录最小元素的索引(总次数N)
内循环比较当前元素与目前已知最小元素(决定是否替换最小元素的索引)
交换次数N,比较次数N^2/2
移动数据最少
Java
class InsertSort {
static void sort(int[] arr){
for (int i = 0; i < arr.length; i++) {
int min = i;
for (int j = i + 1; j < arr.length; j++) {
if (arr[j] < arr[min]){
min = j;
}
}
exchange(arr, i, min);
}
}
static void exchange(int[] arr, int i, int j){
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}