折半插入



public class Binary_insertion_sort {
/*

* 折半插入排序,关键字的比较次数由于采用了折半查找而减少,数量级为O (nlog 2 n) ,
* 但是元素移动次数仍为O (n2 ) 。
* 故折半插入排序时间复杂度仍为O (n2 ) 。折半插入排序方法是稳定的。
* */
public static  void print(int a[]){
for(int i=0;i<a.length;i++){
System.out.print(a[i]+"\t");
}
System.out.println();
}

public static void binary_insertion_sort(int[] a){
for(int j=1;j<a.length;j++){
int key=a[j];
int high=j-1;
int low=0;
while(low<=high){
int mid=(low+high)/2;
if(a[mid]<key){
low=mid+1;
}else{
high=mid-1;
}
}
for(int i=j-1;i>=low;i--){
a[i+1]=a[i];
}
a[low]=key;
}
}

public static void main(String[] args){
int[] a=new int[]{1,5,7,3,2};
print(a);
binary_insertion_sort(a);
print(a);
}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值