查找--二分查找
来源:互联网 发布:k3无法数据引出 编辑:程序博客网 时间:2024/06/05 20:03
二分查找(折半查找)要求:(1)数列有序
(2)数列使用顺序存储结构(比如数组)
二分查找的递归和非递归的实现:
package com.threeTop.www;import java.util.Arrays;/** * 递归和非递归实现的二分查找 * @author wjgs * */public class BinarySearch {private int[] array;public BinarySearch(int []array){this.array=array;}/** * 递归实现的二分查找 * @param key */public int SearchRecursion(int key){if(array!=null){return searchRecursion(key,0,array.length-1);}return -1;}private int searchRecursion(int key, int start, int end) {// TODO Auto-generated method stubif(start>end){return -1;} int mid=start+(end-start)/2; if(array[mid]==key) { return mid; } else if(array[mid]<key) { return searchRecursion( key, mid+1, end); }else { return searchRecursion( key, start, mid-1); }}public void print(){for(int i=0;i<array.length;i++){System.out.print(" "+array[i]);}} /** * 二分查找的非递归实现 * @param key */public int search(int key){if(array==null){return -1;}int start=0;int end=array.length-1;while(start<=end){int mid =start+(end-start)/2;if(array[mid]==key){return mid;}else if(array[mid]<key){start=mid+1;}else{end=mid-1;}}return -1;}public static void main(String []args){/**int []array={5,9,1,9,5,3,7,6,1,10,4}; Arrays.sort(array); //java库函数进行数组的排序 **/ int []array2={1 , 3, 4, 5, 6, 7 , 9, 10}; BinarySearch binarysearch=new BinarySearch(array2); binarysearch.print(); //打印排序后的数组 System.out.println(); System.out.println(binarysearch.SearchRecursion(6)); System.out.println(binarysearch.search(6)); }}
0 0
- 【查找】折半查找/二分查找
- 查找-折半查找(二分查找)
- 查找方法----二分查找
- 折半查找 (二分查找)
- 查找----二分查找法
- 查找树-------二分查找
- 二分查找 (折半查找)
- 查找之二分查找
- 顺序查找,二分查找
- 二分查找、折半查找
- 查找之二分查找
- 二分查找、二叉排序树查找
- 查找之二分查找
- 折半查找(二分查找)
- 二分查找(折半查找)
- 二分查找 三分查找
- 二分查找,三分查找
- 查找算法 二分查找
- CSS清除浮动的方法
- JNI
- Vue学习笔记_03
- python函数参数之_可变参数
- 1014. 福尔摩斯的约会 (20)
- 查找--二分查找
- POJ 1753 Flip Game (DFS + 暴力枚举)
- 百度外卖面经( 2016-10-11更新)
- 编译器Sublime的导航栏sidebar的字体怎么调大
- Java api
- java中Random,Date,Calendar,DateFormat,SimpleDateFormat
- Chrome浏览器的黑屏如何解决
- opencv在vs2013中的环境配置(w7 64位)和coherent line drawing实例代码运行
- PAT 1023 乙等 (组个最小数) C++