/**
*(我也是看完定义才理解的。。)
* 直接插入排序(straight insertion sort),有时也简称为插入排序(insertion sort),是减治法的一种典型应用。 其基本思想如下:
* 对于一个数组A[0,n]的排序问题,假设认为数组在A[0,n-1]排序的问题已经解决了。
* 考虑A[n]的值,从右向左扫描有序数组A[0,n-1],直到第一个小于等于A[n]的元素,将A[n]插在这个元素的后面。
* 很显然,基于增量法的思想在解决这个问题上拥有更高的效率。
*/
@Test
public void cutIn(){
Integer[] a = {34,8,64,51,32,21};
for(int p = 1; p < a.length; p++)
{
//保存当前位置p的元素,其中[0,p-1]已经有序
//每次p++ 的时候都找到新的一个数据的适合位置插入
Integer tmp = a[p];
int j;
for(j = p; j > 0 && tmp.compareTo(a[j-1]) < 0; j--)
{
//p=3时 后移一位 {8,34,64,64,32,21};
//一直后移直到出现一个小于a[p]的数 然后将a[p]放到这个位置
a[j] = a[j-1];
}
//插入到合适的位置
a[j] = tmp;
}
for (int s:a) {
System.out.println(s);
}
}
12-04