插入类排序——折半插入
折半插入排序,是将待插入数首先与已排好序的中间位置数比较,如果大于中间数则将比较范围最低位置设置在中间位置的后一个数,以此循环比较找到正确插入的位置。
//折半排序 public class BinInsertSort { public void binInsertSort(int[] r,int low,int high) { for(int i=low+1;i<=high;i++) { int temp=r[i]; int hi=i-1; int lo=low; //循环条件,当lo的位置在high的位置前面的时候,跳出循环。 while(lo<=hi) { int mid=(lo+hi)/2; if(temp>r[mid]) lo=mid+1; else hi=mid-1; } for(int j=i-1;j>hi;j--) r[j+1]=r[j]; r[hi+1]=temp;//最终插入位置是high位置的后面一个或者是lo的位置 } }
}