插入排序的原理:将一组数据分成两组,我分别将其称为有序组与待插入组。每次从待插入组中取出一个元素,与有序组的元素进行比较,并找到合适的位置,将该元素插到有序组当中。就这样,每次插入一个元素,有序组增加,待插入组减少。直到待插入组元素个数为0。当然,插入过程中涉及到了元素的移动。
代码:
public class InsertSort { public static void main(String[] args) { int[] array = {1, 13, 72, 9, 22, 4, 6, 781, 29, 2}; InsertSort insertSort = new InsertSort(); insertSort(array); } public static void insertSort(int[] array) { int i = 0; int j = 0; int key = 0; for (i = 1; i < array.length; i++) { //从待插入组取出第一个元素。 key = array[i]; //i-1即为有序组最后一个元素(与待插入元素相邻)的下标 j = i - 1; //注意判断条件为两个,j>=0对其进行边界限制。第二个为插入判断条件 while (j >= 0 && key < array[j]) { //若不是合适位置,有序组元素向后移动 array[j + 1] = array[j]; j--; } //循环结束说明找到适当的位置了,是时候插入值了 array[j + 1] = key; } //输出排序后的数组内容 for (int value : array) { System.out.print(value + ","); } } }
结果: