美文网首页
递归折半查找

递归折半查找

作者: 朱宏飞 | 来源:发表于2019-06-28 20:05 被阅读0次

递归封神!

#include <iostream>

using namespace std;

int BinarySearch_I(int *a,const int x,const int n);//迭代查找,x为查找的关键字,n为数组长度

int BinarySearch_R(int *a,const int x,int left,int right);

int main(){

    int a[]={1,2,3,8,7,6,2};

    cout<<"迭代查找";

    cout<<BinarySearch_I(a,3,7);

    cout<<"递归查找";

cout<<BinarySearch_R(a,3,0,6);

return 0;

}

int BinarySearch_I(int *a,const int x,const int n){  //迭代查找

int left=0;

int right=n-1;

int middle=(left+right)/2;

while(left<=right){

if(x>a[middle]){

left=middle;

middle=(left+right)/2;

}

else if(x<a[middle]){

    right=middle;

middle=(left+right)/2;

}

else   

return middle; 

  }

return -1;

}

int BinarySearch_R(int *a,const int x,int left,int right){ //递归

if(left<=right){

int middle=(left+right)/2;

if(x<a[middle]){

return BinarySearch_R(a,x,left, middle-1);

}

else if(x>a[middle]){

return BinarySearch_R(a,x,middle+1,right);

}

else return middle;

    }

    else return -1;

}

最大的感慨,代码光看是不行的。要实践。知行合一,方为上策。

相关文章

  • PHP查找算法

    静态查找 顺序查找 折半查找 递归折半查找

  • 递归折半查找

    递归封神! #include using namespace std; int BinarySearch_I(in...

  • 2.3 二分查找的递归与非递归实现

    Chapter2: 时间复杂度分析、递归、查找与排序 3. 二分查找的递归与非递归实现 二分查找即折半查找,为查找...

  • 2.3 二分查找的递归与非递归实现

    Chapter2: 时间复杂度分析、递归、查找与排序 3. 二分查找的递归与非递归实现 二分查找即折半查找,为查找...

  • 二分查找算法的两种实现方式

    一、二分查找法(二分折半查找) 1、普通方法 2、递归方法

  • 数据结构与算法-递归分治-汉诺塔思想

    折半查找算法的递归实现 思想:减少查找序列的长度,分而治之地进行关键字的查找 汉诺塔问题 汉诺塔是我们递归思想,分...

  • 二分查找

    二分查找是一种查询效率非常高的查找算法。又称折半查找。 起初在数据结构中学习递归时实现二分查找,实际上不用递归也可...

  • java实现二分查找-两种方式

    二分查找是一种查询效率非常高的查找算法。又称折半查找。 起初在数据结构中学习递归时实现二分查找,实际上不用递归也可...

  • 数据结构之查找

    http://www.bjfuacm.com/problem/287/ 基于递归的折半查找发布时间: 2017年9...

  • 二分查找

    二分查找又称折半查找,是一种效率较高的查找方法。二分查找的对象必须是顺序存储结构的有序表(不妨设为递增有序) 递归...

网友评论

      本文标题:递归折半查找

      本文链接:https://www.haomeiwen.com/subject/twglcctx.html