插入排序非常类似于整扑克牌。
在开始摸牌时,左手是空的,牌面朝下放在桌上。接着,一次从桌上摸起一张牌,并将它插入到左手一把牌中的正确位置上。为了找到这张牌的正确位置,要将它与手中已有的牌从右到左地进行比较。无论什么时候,左手中的牌都是排好序的。
private static int[] insertSort(int[] a) { int temp; int insertPoint; for (int i = 1; i < a.length; i++) { //存储待排序的元素值 temp = a[i]; //与待排序元素值作比较的元素的下标 insertPoint = i - 1; //当前元素比待排序元素大 while (insertPoint >= 0 && a[insertPoint] > temp) { a[insertPoint + 1] = a[insertPoint]; insertPoint--; } //找到了插入位置,插入待排序元素 a[insertPoint + 1] = temp; } return a; }
二分插入排序