二分查找算法(递归与非递归两种方式)
时间:
2016-09-09 18:18:35
阅读:
208
评论:
收藏:
0
[点我收藏+]
标签:
首先说说二分查找法。
二分查找法是对一组有序的数字中进行查找,传递相应的数据,进行比较查找到与原数据相同的数据,查找到了返回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;
- }
递归思想会被经常用到,更加突出了编程解决问题的高效。二分查找算法(递归与非递归两种方式)
标签:
原文地址:http://www.cnblogs.com/hdk1993/p/5857593.html