为了账号安全,请及时绑定邮箱和手机立即绑定

Java中使用二分法排序

在数据结构中学习过关于二分法排序的算法,但都是基于C语言或者C++使用指针的方法,自己因为要在项目中使用到此算法,才开始将原有的程序改写为Java语言的。具体的说明如下:
1、二分法查找插入位置
  如果R[i]<R[m]成立,那右指针就要向左移动中间指针一位,否则,左指针要向左移动中间指针一位。反复查找,直到左指针大于右指针时停止。
2、后移
  虽然我们很清楚的知道,我们需要后移那些排序码大于R[i]的记录,但难免会问自己这样几个问题。其实它相当于需要移动从i-1到左指针的记录。
3、插入
  由1中得到的左指针其实就是元素要插入的位置。
4、具体的算法
  public void TwoInsertSort( int[] data ) {
int left,right,num;
int middle,j;
for( int i = 1; i < data.length; i++ ) {
// 准备
left = 0;
right = i-1;
num = data[i];
// 二分法查找插入位置
while( right >= left ) {
// 指向已排序好的中间位置
middle = ( left + right ) / 2;
if( num < data[middle] )
right = middle-1; // 插入的元素在右区间
else
left = middle+1; // 插入的元素在左区间
}
// 后移排序码大于R[i]的记录
for( j = i-1; j >= left; j-- ) {
data[j+1] = data[j];
}
// 插入
data[left] = num;
}
}

点击查看更多内容
1人点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
JAVA开发工程师
手记
粉丝
168
获赞与收藏
3550

关注作者,订阅最新文章

阅读免费教程

感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消