首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

[源码]排序数组二分法(减半)查找

2013-03-12 
[源码]排序数组二分法(折半)查找对于已排序的数组,二分法是一种很简单、有效的查找方式,算法复杂度为O(log2

[源码]排序数组二分法(折半)查找

对于已排序的数组,二分法是一种很简单、有效的查找方式,算法复杂度为O(log2n);

代码:

package alg;public class Bisection {public static int bisectionSearch(int value,int[] array) {int minIndex = 0;int curIndex = 0;int maxIndex = array.length - 1;int count = 0;// 用于循环次数记数int result = -1;if (value == array[maxIndex]) {result = maxIndex;} else if (value == array[minIndex]) {result = minIndex;} else {while(true) {// 如果两者相同或相邻,由于二者的值(除首次)均来自于已与value比较不等的值,因此数组中没有该值。if (2 > maxIndex - minIndex) {result = -1;break;}curIndex = minIndex + (maxIndex - minIndex) / 2;if (array[curIndex] == value) {result = curIndex;break;} else if (array[curIndex] < value) {minIndex = curIndex;} else {maxIndex = curIndex;}count++;}}System.out.println("loops = " + count);return result;}public static void main(String[] args) {int num = 1000;int value = 0;int[] array = new int[num];for (int i = 0; i < num; i++) {array[i] = i;}System.out.println("value = " + value + " at index " + bisectionSearch(value,array) + " of array.");}}
Author:Pirate Leo
blog:http://blog.csdn.net/pirateleo
email:codeevoship@gmail.com
转载请注明出处,谢谢。
由于文中在发布后难免会有勘误或补充,推荐到本博客中阅读本文。

热点排行