java插入排序
基本原理:
直接插入排序的基本操作是将一个记录插入到已经排好的有序表中,从而得到一个新的、记录数增1的有序表。对于给定的一组记录,初始时假定第一个记录自成一个有序序列,其余记录为无序序列。接着从第二个记录开始,按照记录的大小依次将当前处理的记录插入到其之前的有序序列中,直到最后一个记录插到有序序列中为止。
java代码:
public class Insertion {
public static void sort(Comparable[] a){
for (int i=1;i<a.length;i++){
for (int j=i;j>0;j--){
// 比较索引处的j处的值和j-1处的值,j-1处的值比j处的值大,交换位置
if (greater(a[j-1],a[j])){
exch(a,j-1,j);
}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 class InsertionTest {
public static void main(String[] args) {
Integer[] arr={4,3,2,10,12,1,5,6};
Insertion.sort(arr);
System.out.println(Arrays.toString(arr));
}
}