1、把所有的元素分为两种,已排序与未排序;
2、找到未排序组中的第一个元素,向已经排序的组中插入;
3、倒序遍历已经排序的元素,依次和待插入的元素进行比较,直到找到一个元素小于待查元素, 那么就把待插元素放到这个位置,其他元素向后移动一位;
代码实现:import java.util.Arrays;
public class Insertion {
public static void sort(Comparable[] a){
for(int i = 1;i0;j--){
//比较索引j处的值和索引j-1处的值,如果索引j-1处的值比索引j处的值大,则交换数据,如果不大,那么当前位置就是合适的位置,退出循环即可;
if(greater(a[j-1],a[j])){
exch(a,j,j-1);
}else{break;}
}
}
}
private static boolean greater(Comparable v,Comparable w){
return v.compareTo(w)>0;
}
private static void exch(Comparable[] a,int i,int j){
Comparable temp;
temp = a[i];
a[i]=a[j];
a[j]=temp;
}
public static void main(String[] args) {
Integer a [] = {4,3,2,10,12,1,5,6};
Insertion.sort(a);
System.out.println(Arrays.toString(a));
}
}



