二分查找

题目:输入n值(1<=n<=1000)、n个非降序排列的整数以及要查找的数x,使用二分查找算法查找x,输出x所在的下标(0~n-1)及比较次数。若x不存在,输出-1和比较次数。

输入格式:

输入共三行: 第一行是n值; 第二行是n个整数; 第三行是x值。

输出格式:

输出x所在的下标(0~n-1)及比较次数。若x不存在,输出-1和比较次数。

输入样例:

4
1 2 3 4
1

输出样例:

0
2


#include <iostream>using namespace std;int BinarySearch(int *p, int n, int x, int& count);int main()
{int n;cin >> n;int a[n];for (int i = 0; i < n; i++){cin >> a[i];} int x;       // 要查找的数xcin >> x;int count, m;count = 0;     //  比较次数m = BinarySearch(a, n, x, count);cout << m << endl;cout << count;
}int BinarySearch(int *p, int n, int x, int& count)
{int low, high, mid;low = 0; high = n - 1;while(low <= high){count++;mid = (low + high) / 2;if (x == p[mid])return mid;else if (x < p[mid])high = mid - 1;elselow = mid + 1;}return -1;
}

PTA - 二分查找相关推荐

  1. PTA - 二分查找法

    二分查找法 题目:用二分法在一个有序数列{1,2,3,4,5,6,7,8,9,10}中查找key值,若找到key则输出其在数组中对应的下标,否则输出not found. 输入格式: 直接输入一个要查找 ...

  2. PTA 6-10 二分查找

    PTA 6-10 二分查找 (20分) 题目链接 ->link 本题要求实现二分查找算法. 函数结构定义 Position BinarySearch( List L, ElementType X ...

  3. PTA 7-13 列车调度 (25 分) C语言和C++实现(二分查找)

    7-13 列车调度 (25 分) 火车站的列车调度铁轨的结构如下图所示. 两端分别是一条入口(Entrance)轨道和一条出口(Exit)轨道,它们之间有N条平行的轨道.每趟列车从入口可以选择任意一条 ...

  4. PTA 函数题 二分查找(C语言)

    本题要求实现二分查找算法. 函数接口定义: Position BinarySearch( List L, ElementType X ); 其中List结构定义如下: typedef int Posi ...

  5. 算法图解/二分查找/简单查找/选择排序/递归算法/快速排序算法/

    大 O 表示法 大 O 表示法在讨论运行时间时,log 指的都是 log2 大 O 表示法指出了算法有多快,让你能够比较操作数,它指出了算法运行时间的增速,而并非以秒为单位的速度. 大 O 表示法指出 ...

  6. LeetCode简单题之二分查找

    题目 给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1. 示例 1: 输入: n ...

  7. 二分查找模板全面总结

    二分查找 二分法的引入 情形1 1.X的平方根 2.搜索旋转排序数组 情形2 1.第一个错误的版本 2.寻找峰值 3.寻找旋转排序数组中的最小值 情形3 在排序数组中查找第一个和最后一个位置 当遇到查 ...

  8. 数据结构与算法(8-2)有序表查找(折半查找(二分查找)、插值查找)

    目录 一.折半查找(二分查找) 二.插值查找 总代码 一.折半查找(二分查找) 原理:一次次折半,不断向着查找值的位置靠近 . 适用场景:有序(必须) 流程:开始时,min标志首,max标志尾,med ...

  9. 二分查找算法的一点改进

    在计算机科学中,二分查找,是一种在有序数组中查找某一特定元素的搜索算法.这种搜索算法每一次比较都使搜索范围减半.第一篇二分查找的论文发表于1946年,然而第一个没有bug的二分查找算法却是在1962年 ...

  10. 二分法:二分查找(递归+非递归)实现

    二分查找又称折半查找,首先,假设表中元素是按升序排列,将 表中间位置的关键字与查找关键字比较: 如果两者相等,则查找成功; 否则利用中间位置将表分成前.后两个子表: 1)如果中间位置的关键字大于查找关 ...

最新文章

  1. CUDA 8混合精度编程
  2. 微软欢迎所有热爱开源软件的朋友们来投稿![征稿开放时间:2015年8月17日]
  3. Java学习的30个目标以及系统架构师推荐的书
  4. (转)Javascript 面向对象编程(一):封装
  5. android 简单的音乐播放器实现播放模式的切换
  6. mysql 批量_mysql LOAD语句批量录入数据
  7. jsp中给div加背景_web前端入门到实战:详解css3如何给背景图片加颜色遮罩
  8. Ubuntu12.04配置nginx+php+mysql
  9. oracle客户端ora 12541,Oracle 11g 64bit下程序报ORA-12541: TNS: 无监听程序解决办法
  10. 如何在python中检查文件大小?
  11. ROS的学习(十二)用C++写一个简单的发布者
  12. tomcat查看线程数
  13. 服务器mac地址变了怎办_获取服务器的IP地址和MAC地址
  14. 计算机房安全防范措施,机房安全防护方案
  15. 让聊天机器人来填平技术鸿沟吧!
  16. 牛牛的旅游纪念品 动态规划背包问题
  17. ELK学习遇到的问题3--ERROR pipeline/output.go:100 Failed to connect to backoff(elasticsearch..
  18. Python经典例题:跑马灯文字效应
  19. 安卓使用MediaPlayer播放视频
  20. 【C++】三大易混概念之覆盖

热门文章

  1. flink(三):数据处理Transformation
  2. [leetcode]: 506. Relative Ranks
  3. React Native入门——布局实践:开发京东客户端首页(一)
  4. 单调栈及单调栈的应用
  5. 关于 nor it's doXxx() equivalent is defined in action class 的问题解决办法
  6. 网络——奈奎斯特定理和香农定理
  7. 2012蓝桥杯省赛真题 鲁卡斯序列
  8. channel练习题
  9. Python实现“求职APP网络爬虫”
  10. 机器学习 笔记04 ---决策树(DT):理论+代码实现