把当前元素插入到一个已经排序的数组中,从后往前找,如果插入数比当前数小的话,当前数就后移,否则,直接插入
public class InsertSort {
public static <AnyType extends Comparable<? super AnyType>>
AnyType[] insertionSort(AnyType[] a){
int j;
for(int p=1;p<a.length;p++){
AnyType tmp=a[p];
for(j=p;j>0&&tmp.compareTo(a[j-1])<0;j--)
a[j]=a[j-1];
a[j]=tmp;
}
return a;
}
}
测试:
public class MyTest {
public static void main(String[] args) {
// TODO Auto-generated method stub
Integer[] a=new Integer[]{2,14,5,16,7,1,6,12,5};
a=InsertSort.insertionSort(a);
for(Integer b:a){
System.out.print(b+" ");
}
}
}
效果:
1 2 5 5 6 7 12 14 16