描述

请编写一个递归的折半查找算法,查找给定有序数组中的某一元素。

输入

多组数据,每组数据有三行。第一行为数组长度n,第二行为n个递增排列的数字,第三行为需要查找的数字k。当n=0时输入结束。

输出

每组数据输出一行,如果可以找到数字,则输出“YES”,否则输出“NO”。

输入样例 1

5
1 4 6 7 8
6
6
1 2 5 7 9 100
8
0

输出样例 1

YES
NO

思路:

这个题就是折半查找的最基本应用了,折半查找会了这个题就没难度了,能想到的优化方法就是用vector或者是int *的方式开辟一个和n大小一样的数组,避免空间的浪费。

#include<iostream>
#include<string>
#include<algorithm>
#include<vector>
#include<stack>
#include<set>
#include<map>
using namespace std;void Create(vector<int>&v,int n)
{int temp;for (int i = 0; i < n; i++){cin >> temp;v.push_back(temp);}
}
void Find(vector<int> v,int x,int low,int high)
{if (low >= high){cout << "NO" << endl;return;}int mid = (low + high) / 2;if (v[mid] == x){cout << "YES" << endl;return;}if (v[mid] < x){low = mid + 1;Find(v, x, low, high);}else{high = mid - 1;Find(v, x, low, high);}}
int main()
{int n;while (cin >> n && n != 0){vector<int> v;Create(v, n);int x;cin >> x;int low = 0, high = n - 1;Find(v, x,low,high);}return 0;
}

4015-基于递归的折半查找(C++)相关推荐

  1. 折半查找递归算法_两篇文章带你了解java基础算法之递归和折半查找

    2.1 递归 递归(recursion)是一种常见的解决问题的方法,即把问题逐渐简单化.递归的基本思想就是"自己调用自己",一个使用递归技术的方法将会直接或者间接的调用自己.利用递 ...

  2. java 递归_两篇文章带你了解java基础算法之递归和折半查找

    2.1 递归 递归(recursion)是一种常见的解决问题的方法,即把问题逐渐简单化.递归的基本思想就是"自己调用自己",一个使用递归技术的方法将会直接或者间接的调用自己.利用递 ...

  3. 递归应用:折半查找法

    折半查找法介绍 在计算机科学中,折半搜索(英语:half-interval search),也称二分搜索(英语:binary search).对数搜索(英语:logarithmic search),是 ...

  4. 顺序表查找+折半查找(二级)

    我们讲了各种数据 结构之后,比如讲了线性表了,讲了栈和队列,讲了树和二叉树,讲了图之后呢,我们最后还有两个专题,一个叫查找,一个叫排序,我们先看看查找,查找包括哪些内容啊,第一个线性表的查找,数组或者 ...

  5. java数据结构之折半查找

    折半查找,也称二分法查找.二分搜索,是一种在有序数组中查找某一特定元素的搜索算法,这里强调有序表明这种算法的特定使用场景: 搜素过程为,从数组中间元素开始,如果中间元素正好是要查找的元素,则搜素过程结 ...

  6. 数据结构上机实践第14周项目1 - 验证算法(折半查找)

    验证算法(折半查找) 项目要求如下: 请用有序表{12,18,24,35,47,50,62,83,90,115,134}作为测试序列,分别对查找90.47.100进行测试. 实现源代码如下: //*C ...

  7. 递归二分法php,PHP基于二分法实现数组查找功能示例【循环与递归算法】

    本文实例讲述了PHP基于二分法实现数组查找功能.分享给大家供大家参考,具体如下: 二分法.分别使用while循环的方法和递归调用的方法. // 二分法的使用数组必须是有序的,或升序,或降序 $arr ...

  8. Java实现折半查找(二分查找)的递归和非递归算法

    Java二分查找实现,欢迎大家提出交流意见. /** *名称:BinarySearch *功能:实现了折半查找(二分查找)的递归和非递归算法. *说明: *     1.要求所查找的数组已有序,并且其 ...

  9. 折半查找(非递归与递归实现)

    折半查找非递归与递归实现: #include<stdio.h> int linner(int a[],int n,int value); int halfSearch(int a[],in ...

最新文章

  1. jQuery中的closest()和parents()的差别
  2. python list元素合并_python list 合并连接字符串的方法
  3. 【转】C#中Invoke的用法
  4. 索引-bootsrap
  5. 数据结构 4 字符匹配-KMP算法
  6. [Unity基础]01Unity基本操作
  7. 暑假第一战——java+mysql 个人信息管理系统
  8. 备忘录——贝叶斯网络与贝叶斯深度网络学习思路总结
  9. 实验matlab滤波器心得,数字信号处理,实验,Matlab实验FIR滤波器实现
  10. c语言命令行贪吃蛇,C语言实现贪吃蛇游戏(命令行)
  11. 学说话:和光合作用五道口店咖啡吧的小姑娘过招儿;推荐:《如何听如何说》 - [学说话]
  12. 学习编程时真正值得一读的一篇文章 与 书籍
  13. 计算机网恢,电脑附身
  14. 面对这样的网络状况我真的醉了
  15. 智能养殖畜牧系统研发
  16. 厂房消防宣传设置要求和注意事项
  17. 解决腾讯地图标记多个点,只渲染最后一个点问题
  18. (转)WorldQuant :如何缔造量化金融王国
  19. android bugreport 解析
  20. Invitation Cards

热门文章

  1. python 字符串匹配like_python中关于正则表达式一
  2. 8.5-Day1T1--Asm.Def 谈笑风生
  3. [源码和文档分享]基于AVL树表示的集合ADT实现与应用
  4. jquery html5 file 上传图片显示图片(上传图片预览)
  5. 在github上搭建hexo博客
  6. 大数据下的精准营销,媒介们将何去何从
  7. node.js express架构安装部署
  8. python对象的复制问题
  9. ASP.NET_ASP.NET Cookies
  10. postgresql TOAST存储方式