二分插入排序的分析与实现

1、基本思想:
二分插入法与直接排序类似,只是在确定插入位置的方法是用二分法,即从第0个数据开始依次折半与待插入的数据进行比较直到找到合适的位置。

2、图示:

[img]http://dl2.iteye.com/upload/attachment/0113/1140/95942789-2032-3249-b6a7-b8fdde77dd1f.png[/img]

3、Java具体代码实现:
  package com.leiht.sort;

public class SortBinary {
public static void main(String[] args) {
int[] numbers = { 56, 45, 78, 67, 99, 13, 34, 49, 55, 34, 12, 77, 1 };

System.out.println("排序之前:");
for (int i = 0; i < numbers.length; i++) {
System.out.print(numbers[i] + " ");
}

new SortBinary().sortBinary(numbers);

System.out.println();
System.out.println("排序之后:");
for (int i = 0; i < numbers.length; i++) {
System.out.print(numbers[i] + " ");
}
}

private void sortBinary(int[] numbers) {
for(int i = 0; i < numbers.length; i++) {
int temp = numbers[i];

int left = 0;
int right = i -1;
int middle = 0;

while(left <= right) {
middle = (left + right)/2;
if(numbers[i] > numbers[middle]) {
left = middle+1;
}else {
right = middle-1;
}
}
for(int j = i-1; j >= left; j--) {
numbers[j+1] = numbers[j];
}
numbers[left] = temp;
System.out.println("left=" + left + ",right=" + right + ",middle=" + middle);
}
}

}


4、分析
显然,二分排序是一种稳定的排序方法
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值