**
折半插入排序
**
折半插入排序;第一步重数组的第二个元素开始排序,将要插入的元素线放到一个中间变量x中,将要插入变量在数组中的位置置空,然后通过折半的方法找到它要放入的位置,将比他大的元素向后移,最后将它插入到正确的位置即a[low]。
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package paixu;
public class PaiXu {
public static void main(String[] args) {
int []a={48,62,35,77,55,14,35,98};
Binsort(a,a.length);
for(int i=0;i<a.length;i++){
System.out.println(a[i]);
}
}
public static void Binsort(int[] a, int n) {
for(int i=1;i<n;i++){
int x=a[i];//当前要插入的元素的值赋值给中间变量
int low=0;
int high=i-1;
while(low<=high){
int mid=(low+high)/2;
if(x<a[mid]){
high=mid-1;
}
else
{
low=mid+1;
}
}//二分法查找元素的位置
for(int j=i-1;j>=low;j--){
a[j+1]=a[j];
}
a[high+1]=x;//也即是a[low]
}
}
}