将数组看成两部分,一部分有序,另一部分无序。
取第一个元素作为有序部分(因为只有一个元素它一定是有序的),
取出下一个元素对已排序数组从后往前扫描与未排序数组元素逐个比较,当中该元素大于待插元素,就将该元素移到下一个位置,重复此操作,直到找到小于等于该元素的待插元素,将新元素插到该元素的后面。
public int[] insertSort(int[] arr){
int preindex;
int current;
for (int i = 1; i < arr.length; i++) {
preindex = i-1;
current = arr[i];
while(preindex >= 0 && arr[preindex] > current){//当该元素大于待插元素,将该元素移到下一个位置
arr[preindex + 1] = arr[preindex];
preindex--; //往前扫描
}
arr[preindex + 1] = current;//当不大于已排序的某个元素后就把它放在后面
}
return arr;