[源码]排序数组二分法(折半)查找
2013-03-08 16:25
253 查看
对于已排序的数组,二分法是一种很简单、有效的查找方式,算法复杂度为O(log2n);
代码:
blog:http://blog.csdn.net/pirateleo
email:codeevoship@gmail.com
转载请注明出处,谢谢。
由于文中在发布后难免会有勘误或补充,推荐到本博客中阅读本文。
代码:
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
转载请注明出处,谢谢。
由于文中在发布后难免会有勘误或补充,推荐到本博客中阅读本文。
相关文章推荐
- Java二分法在已排序数组中查找指定数
- JAVA函数、数组讲解(案例:直接排序、冒泡排序、拆半查找(二分法))
- 一维数组中的一些常用方法(打印数组、逆序、选择排序、冒泡排序、二分法查找、普通查找)
- 个人练习数据结构之--------------关于线性数据的有序数组以及之上的二分法查找、不同排序方法的学习
- Java数组之反转、排序、折半查找
- 黑马程序员03数组排序与二分法查找
- 数组排序 和 二分法查找
- java数组排序与折半查找
- 使用while循环和折半法查找一个整数是否在一个排序的int类型数组中
- JAVA数组排序——二分(折半)查找
- 七、数组及数组排序、二分法查找
- Java基础04:选择排序;冒泡排序;折半查找;二位数组
- 例题3-8 使用whle循环和折半法查找一个整数是否在一个排序的int类型数组中
- Java学习之数组1(1.数组的声明;2.元素为引用数据类型的数组;3.关于main方法里的String[] args;4.数组排序;5.数3退1 数组算法,(用数组模拟链表);6数组查找之二分法;7数组的拷贝)
- 数组排序 和 二分法查找
- day04获取数组的最值,选择排序,冒泡排序,折半查找
- 黑马程序员_JavaSE基础06 之 数组的操作 求最值 排序 折半查找
- 一月十日练习习题,1数组数据存入字典并输出2降序 和倒叙 输出数组中内容3对字符串当中信息进行查找是否存在4 把数组当中信息按照中文排序
- 折半法查找数组中指定数字的位置并返回
- 关于动态存储分配函数的调用,在已经过排序的数组中查找及删除内容的操作,余数的分析,删除字符数组中的空格,对链表的逆置,在源字符串中查找子字符串的个数,函数指针以及函数的调用,循环赋值带来的问题以及插入