二分搜索(java)
2017-06-12 20:27
176 查看
思路:
1 先将输入的数组排序
2 设置中间值mid=(low+high)/2
3 根据中间值将数组分成三部分:(low, mid-1)(mid)(mid+1, high)
4 如果要找的值等于mid,返回中间值
5 如果要找的值小于mid,递归搜索左边的部分(low, mid-1)
6 如果要找的值大于mid,递归搜索右边的部分(mid+1, high)
4000
1 先将输入的数组排序
2 设置中间值mid=(low+high)/2
3 根据中间值将数组分成三部分:(low, mid-1)(mid)(mid+1, high)
4 如果要找的值等于mid,返回中间值
5 如果要找的值小于mid,递归搜索左边的部分(low, mid-1)
6 如果要找的值大于mid,递归搜索右边的部分(mid+1, high)
import java.util.Scanner; public class Test{ public static void main(String[] args) { Scanner inp=new Scanner(System.in); int n=inp.nextInt(); int a[]=new int ; for(int i=0;i<n;i++)a[i]=inp.nextInt(); SSort(a); int b=inp.nextInt(); System.out.println(search(a,0,n-1,b)); } public static int search(int a[],int low,int high,int b){ if(low<=high){ int mid=(low+high)/2; if(b==a[mid])return mid; if(b<a[mid])return search(a, low, mid-1, b); if(b>a[mid])return search(a, mid+1, high, b); } return -1; } public static void SSort(int a[]){ int temp=0; for(int i=a.length-1;i>0;i--){ for(int j=0;j<i;j++){ if(a[j+1]<a[j]){ temp=a[j+1]; a[j+1]=a[j]; a[j]=temp; } } } } }
4000
相关文章推荐
- 实验一 分治与递归―二分搜索 java实现
- 递归与分治策略之二分搜索(Java版本)
- [Java]二分搜索(二分查找)
- 一步一步学习java数组学习(二分搜索)
- 算法与数据结构-二分搜索 讲解与java代码实现
- 二分查找算法(java)二分搜索
- Java 分治算法实现排序数索引(二分搜索)
- java-顺序和乱序数组的二分搜索
- 二分搜索学习笔记 Java实现
- Java 二分搜索
- 第八届蓝桥杯JAVAB组第9题 分巧克力 二分搜索
- 二分搜索的java实现
- csu 1114平方根大搜索(JAVA大小数+二分)
- 二分搜索及其变形--java实现
- 二分搜索问题详解(java)
- Java使用分治算法实现排序数索引功能示例【二分搜索】
- PAT甲级1010【Radix】二分搜索java题解
- 编程珠玑第五章二分搜索(折半查找)之java实现
- 算法入门---java语言实现的二分搜索树小结
- java 二分搜索