思路:
一个未排序的数组(当然也可以是链表)可以分为两个部分,前半部分是已经排序的,后半部分是未排序的。在进行排序时,只需要在未排序的部分中选择一个元素,将其插入前面有序的数组中即可。最终,未排序的部分会越来越少,直到为0,那么排序就完成了。初始时,可以假设已排序部分就是第一个元素。
代码
import java.util.Arrays; public class Client<T> { public static void main(String[] args) { int[] arr = {4,5,6,32,0,89,6,54,4,33,22}; insertSort(arr); System.out.println(Arrays.toString(arr)); } private static void insertSort(int[] arr){ for (int i = 0; i < arr.length; i++) { int key = arr[i]; int j = i - 1; while (j >= 0 && arr[j] > key) { arr[j + 1] = arr[j]; j--; } arr[j + 1] = key; } } }