
插入排序的基本思想:一个未排序的数组(链表)可分为两部分,前部分时已排序的,后半部分是未排序的。在进行排序时,在未排序的部分中选择一个元素,将其插入前面有序的数组中即可。最终,未排序的部分直到0,排序就完成了。
插入排序的一般算法如下:
public static void insertSort(int[] arr){
int length = arr.length;
int i, j, key;
for(i = 1; i<length; i++){
//key为要准备插入的元素
key = arr[i];
j = i-1;
while( j>=0 && arr[j]>key ){
arr[j+1] = arr[j];
j--;
}
//找到合适的位置插入key
arr[j+1] = key;
}
}
public static void main(String[] args){
int[] art = {1, 5, 3, 2, 7, 6, 1};
insertSort(art);
System.out.println(Arrays.toString(art));
}
[1, 1, 2, 3, 5, 6, 7]

当前数据的插入依赖于上一次得到的有序序列,所以插入排序很难并行化。