二分查找算法(递归与非递归两种方式)
Posted 程序员修练之路
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了二分查找算法(递归与非递归两种方式)相关的知识,希望对你有一定的参考价值。
首先说说二分查找法。
二分查找法是对一组有序的数字中进行查找,传递相应的数据,进行比较查找到与原数据相同的数据,查找到了返回1,失败返回对应的数组下标。
采用非递归方式完成二分查找法。java代码如下所示。
-
-
-
-
- public static int binarySearch(Integer[]srcArray,int des){
-
- int low=0;
-
- int high=srcArray.length-1;
-
- while(low<=high){
-
- int middle=low+((high-low)>>1);
-
- if(des==srcArray[middle]){
- return middle;
-
- }else if(des<srcArray[middle]){
- high=middle-1;
-
- }else{
- low=middle+1;
- }
- }
- return-1;
- }
-
- }
采用递归方式完成二分查找算法。代码如下所示。
-
-
-
-
-
-
-
-
- int BinSearch(int Array[],int low,int high,int key)
- {
- if (low<=high)
- {
- int mid = (low+high)/2;
- if(key == Array[mid])
- return mid;
- else if(key<Array[mid])
-
- return BinSearch(Array,low,mid-1,key);
- else if(key>Array[mid])
- return BinSearch(Array,mid+1,high,key);
- }
- else
- return -1;
- }
递归思想会被经常用到,更加突出了编程解决问题的高效。 print? -
-
-
-
- public static int binarySearch(Integer[]srcArray,int des){
-
- int low=0;
-
- int high=srcArray.length-1;
-
- while(low<=high){
-
- int middle=low+((high-low)>>1);
-
- if(des==srcArray[middle]){
- return middle;
-
- }else if(des<srcArray[middle]){
- high=middle-1;
-
- }else{
- low=middle+1;
- }
- }
- return-1;
- }
-
- }
采用递归方式完成二分查找算法。代码如下所示。
-
-
-
-
-
-
-
-
- int BinSearch(int Array[],int low,int high,int key)
- {
- if (low<=high)
- {
- int mid = (low+high)/2;
- if(key == Array[mid])
- return mid;
- else if(key<Array[mid])
-
- return BinSearch(Array,low,mid-1,key);
- else if(key>Array[mid])
- return BinSearch(Array,mid+1,high,key);
- }
- else
- return -1;
- }
递归思想会被经常用到,更加突出了编程解决问题的高效。以上是关于二分查找算法(递归与非递归两种方式)的主要内容,如果未能解决你的问题,请参考以下文章
二分查找实践
学习笔记:二分法查找的递归和非递归两种算法
二分法算法代码
Java实现二分查找算法
python--递归二分查找算法
实现有序表二分查找