首页 > 其他分享 >折半查找

折半查找

时间:2023-04-20 22:01:52浏览次数:30  
标签:折半 cout int mid high 查找 low

问题描述:

   N个有序整数数列已放在一堆数组中,利用二分查找法查找整数m在数组中的位置。若找到,则输出其下表值,反之则输出“Not be found!”

   1.定义一个最低值位数low = 0,定义一个最高值位数high = N-1;

    2.当low<=high时计算mid = (low + high)/ 2;

    3.如果要找的值m < a[mid],high = mid -1

    4.如果要找的值m >a[mid],low = mid +1

    5.若找到则结束循环打印结果

#include<iostream>
#define N 10
using namespace std;
int main()
{
int i, a[N] = { -3,4,7,9,13,45,67,89,100,180 };
int low = 0, high = N - 1, mid, k = -1, m;
cout << "a数组中的数据如下:" << endl;
for (i = 0; i < N; i++)
cout << a[i]<<" ";
cout << endl;
cin >> m;
while (low <= high)
{
mid = (low + high) / 2;
if (m < a[mid])
high = mid - 1;
else
if (m > a[mid])
low = mid + 1;
else
{
k = mid;
break;
}
}
if (k >= 0)
cout << "m = " << m << " " << "index = " << k;
else cout << "Not be found!" << endl;
return 0;
}

标签:折半,cout,int,mid,high,查找,low
From: https://www.cnblogs.com/hbro/p/17338509.html

相关文章

  • 二分查找
    给定一个 n 个元素有序的(升序)整型数组 nums和一个目标值 target ,写一个函数搜索 nums 中的target,如果目标值存在返回下标,否则返回-1。示例1:输入:nums=[-1,0,3,5,9,12],target=9输出:4解释:9出现在nums中并且下标为4示例 2:输入:nums=[-1,0,3,5,9,......
  • 查找80端口请求数最高的前20个IP
    有时候业务的请求量突然上去了,那么这个时候我们可以查看下请求来源IP情况,如果是集中在少数IP上的,那么可能是存在攻击行为,我们使用防火墙就可以进行封禁。命令: netstat-anlp|grep80|greptcp|awk'{print$5}'|awk-F:'{print$1}'|sort|uniq-c|sort-nr|h......
  • 二分查找:剑指 Offer 11. 旋转数组的最小数字
    题目描述:把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。给你一个可能存在 重复 元素值的数组 numbers ,它原来是一个升序排列的数组,并按上述情形进行了一次旋转。请返回旋转数组的最小元素。例如,数组 [3,4,5,1,2]为[1,2,3,4,5]的一次旋转,该数组的最......
  • 选择排序和二分查找
    选择排序 二分查找 ......
  • 代码随想录算法训练营第一天| 704. 二分查找、27. 移除元素。
    目录一、基础知识-二分法解题思路-数组中删除的思路二、题目一:704.二分查找三、题目二:27.移除元素一、基础知识1.二分法解题思路要求数组必须是有序排列,仅需要根据题目的条件去确定搜索区间。第一个关键点:区间的取值。一般有左闭右闭,左闭右开,左开右闭三种,这个的选择......
  • 704. 二分查找(leetcode)
    https://leetcode.cn/problems/binary-search/简单二分classSolution{public:intsearch(vector<int>&nums,inttarget){intl=0,r=nums.size()-1;while(l<r){intmid=l+r>>1;if(nums[mid]......
  • 查找(1.顺序查找、2.二分法查找)
    顺序查找既是for循环,在循环内用if匹配输入的值是否有对等,有即返回对应结果如果for循环下,没有对应的匹配值,要返回提示没找到用如下方法二分法查找1.必须是一个有序的列表2.先找到数组的中间值,拿输入值与其配对3.如果值是小了往左边选中间值,再匹对。反之向右.........
  • excel查找参数快速入门
    将两个sheet放在一起,然后以一个sheet的某个单元格填充为准,点击这个要填充的单元格,最终计算的结果就是当前这个sheet要对应的数值是否能查找到,如果能单元值不变;如果不能单元值变化,填充为N/A=VLOOKUP(火车站点!B9,Sheet1!$A$2:$A$120,1,FALSE)火车站点!B9表示当前你要......
  • C++恶意软件开发(四)通过查找进程名进行DLL注入
    通过进程名查找PID当我们编写注入器的时候,肯定是希望直接通过进程名进行注入,而不是像上一篇笔记一样通过手动输入PID进行查找。通过进程名查找PID的步骤如下:(1)创建系统中所有进程的快照(2)保存系统快照中遇到的第一个进程的信息(3)循环检索系统中进程的信息是否匹配需要查......
  • vi 查找关键字
    https://blog.csdn.net/weixin_40959890/article/details/128004090vi打开一个文件后命令模式下敲斜杆(/),这时在状态栏(也就是屏幕左下脚)就出现了“/”然后输入你要查找的关键字敲回车就可以了。如果你要继续查找此关键字,敲字符n就可以继续查找了。敲字符N(大写N)就会向前......