算法介绍
对于少量元素排序,插入排序是一个有效的排序算法。排序方式就像我们整理一副扑克牌一样,最开始我们左手是空的,然后我们每次从桌面上摸一张牌并放到正确的位置。当牌摸完之后,手上的牌就是一副已经排序好的牌了。下图展示了此排序算法的工作方式:
代码实现
public int[] insertionSort(int[] array) {
for (int i = 1; i < array.length; i++) {
//当前要插入的值
int key = array[i];
//将当前要插入的值和已经排序好的值进行比较,
//当前值比已经插入的值小则将较大值后移
int j = i - 1;
while (j > -1 && array[j] > key) {
array[j + 1] = array[j];
j--;
}
//将当前要插入的值插入空缺位置
array[j + 1] = key;
}
return array;
}
就像摸牌一样首先你手上得有两张牌之后才能对牌进行排序,所以从array[1]开始,判断array[1]和array[0]的大小,如果待比较的值比当前要插入的值大,则将待比较的值后移。重复此步骤,将排序好的所有值与当前需要插入的值比较之后就能找我当前要插入的值的插入位置,之后将待插入的值插入待插入的位置。这样循环一次就能完成一次插入,当循环到最后一个元素的时候,我们的工作也就完成了。