两种方式Java实现二分查找法
2017-04-29 15:04
218 查看
小树今天使用递归方法实现了二分查找法,也写了普通的二分查找法,代码如下:
运行结果:
bits的内存:64
A数组排序后结果:
2 4 12 13 20 22 23 31 32 45
递归二分查找法的结果:6
普通二分查找法的结果:6
import java.util.*; public class BinarySort { public static void main(String[]args){ int A[]={2,32,4,12,22,31,20,45,13,23}; BitSort.bitSort(A);//调用位排序算法进行排序 System.out.println("A数组排序后结果:"); for(int i=0;i<A.length;i++) System.out.print(A[i]+" "); System.out.println(); System.out.println("递归二分查找法的结果:"+recursiveBinarySearch(A,23)); System.out.println("普通二分查找法的结果:"+binarySearch(A,23)); } //递归二分查找法 public static int recursiveBinarySearch(int[]list,int key) { int low=0; int high=list.length-1; return recursiveBinarySearch(list,key,low,high); } public static int recursiveBinarySearch(int[]list,int key,int low,int high) { if(low>high)//找不到相应的key return -low-1; int mid=low+(high-low)/2;//此处必须加上low,否则会发生StackOverFlowError,因为(high-low)的值在发生变化 if(key==list[mid]) return mid; else if(key<list[mid]) return recursiveBinarySearch(list,key,low,mid-1); else return recursiveBinarySearch(list,key,mid+1,high); } //普通二分查找法 public static int binarySearch(int []A,int key) { int low=0; int high=A.length-1; while(low<=high) { int mid=low+(high-low)/2; if(key==A[mid]) return mid; else if(key<A[mid]) high=mid-1; else low=mid+1; } return -1; } }
运行结果:
bits的内存:64
A数组排序后结果:
2 4 12 13 20 22 23 31 32 45
递归二分查找法的结果:6
普通二分查找法的结果:6
相关文章推荐
- Java的栈实现(数组、链表两种方式)
- Java多线程的两种实现方式详细解释
- java Thread编程(三) 同步的两种不同实现方式
- Java多线程——常用的实现多线程的两种方式
- java实现文件下载的两种方式
- Java基于递归和循环两种方式实现未知维度集合的笛卡尔积算法示例
- Java多线程系列--“基础篇”02之 常用的实现多线程的两种方式
- Java中匿名类的两种实现方式 .
- Java程序操作Oracle两种方式之简单实现
- Java中三种代理方式—— 静态代理与两种动态代理的实现机制
- Spark中RDD转换成DataFrame的两种方式(分别用Java和scala实现)
- java中实现同步的两种方式:syschronized和lock的区别和联系
- Java实现动态代理的两种方式
- Java中有两种实现多线程的方式以及两种方式之间的区别
- java 实现文件复制的两种方式
- Java两种方式实现多线程对比
- java 实现BufferedImage和ImageReader两种方式获取图片宽高、判断图片类型、获取图片大小工具类代码以及测试响应结果
- Java两种方式简单实现:爬取网页并且保存
- java中匿名内部类的两种实现方式