二分查找
2013-12-10 22:34
106 查看
二分算法
二分查找是一种高效率线性表的查找算法。在查找时必须将线性表中的关键字排好序。
基本思路如下:
1、先确定线性表的中间位置 mid=(first+last)/2
2、比较所要查找的关键字b与中间位置的关键字的大小,如果相等则输出“是”
3、如果大于中间值,就到后半部分查找;如果查到就返回“是”,否则返回“否”
4、如果小于中间值,就到前半部分查找;如果查到就返回“是”,否则返回“否”
二分查找是一种高效率线性表的查找算法。在查找时必须将线性表中的关键字排好序。
基本思路如下:
1、先确定线性表的中间位置 mid=(first+last)/2
2、比较所要查找的关键字b与中间位置的关键字的大小,如果相等则输出“是”
3、如果大于中间值,就到后半部分查找;如果查到就返回“是”,否则返回“否”
4、如果小于中间值,就到前半部分查找;如果查到就返回“是”,否则返回“否”
package example; import java.util.Arrays; import java.util.Scanner; public class Suanfa { //查找方法 public static String searchTest(int[] array, int value){ if(array.length==0){ return "数组为空!!"; }else{ //定义该序列的起始下标 int startIndex = 0; //末尾下标的动态值 int endIndex = array.length-1; //中间值下标=(起始下标+末尾下标)/2 int middle = (startIndex+endIndex)/2;//在此例子数组中等于3.5 //用while循环查找 while(endIndex >= startIndex){ if(value == array[middle]){ System.out.println("是"); break; }else if(value > array[middle]){ startIndex = middle+1; middle = (startIndex+endIndex)/2; //System.out.println("开始下标为:"+startIndex+"============"+"中间下标为:"+middle); if(value == array[middle]){ System.out.println("是"); }else{ System.out.println("否"); } break; }else if(value < array[middle]){ endIndex = middle - 1; middle = (startIndex+endIndex)/2; if(value == array[middle]){ System.out.println("是"); }else{ System.out.println("否"); } break; } } return "数组中无该数值"; } } public static void main(String[] args) { //定义一数字序列 int[] a = {1,2,3,4,5,6,7,8,9,10}; //int[] a = {1,3,4,5,8,7,9,11,15}; //先升序排序 Arrays.sort(a); //通过在控制台输入input值 Scanner sc = new Scanner(System.in); System.out.println("请输入您要查找的数字:"); int input = sc.nextInt(); //调用查找的方法,传入要查找的数字 searchTest(a,input); } }
相关文章推荐
- 二分查找突破上下限,树状数组的三种应用。
- 已排序二维数组中的二分查找
- sort排序与二分查找
- 二分查找的两种实现方式
- 数组与二分查找
- 插入,冒泡,选择,快速排序,二分查找
- Leetcode 278 First Bad Version 二分查找(二分下标)
- C/C++ 笔试面试(2)——二分查找 的确遇到的笔试题
- 二分查找函数bsearch与排序函数qsort(两个好基友)
- STL中的二分查找——lower_bound 、upper_bound 、binary_search
- 数据结构与算法实践 之 二分查找初识
- 二分查找
- lintcode-106-排序列表转换为二分查找树
- 二分查找算法
- 问题 A: 二分查找
- 二分查找求函数的区间最小值&&http://acm.hdu.edu.cn/showproblem.php?pid=2899
- 复习C语言算法——二分查找
- 你真的会二分查找吗?
- PHP-----二维数组和二分查找
- 数组 获取最值(最大值 最小值)选择排序 冒泡排序 快速排序 半查找(二分查找) 十进制转其他进制法