`
leihongtai2010
  • 浏览: 14318 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

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

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

2、图示:
 


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、分析
  显然,二分排序是一种稳定的排序方法
 
  • 大小: 46.8 KB
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics