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

折半查找

时间:2023-04-21 16:36:53浏览次数:26  
标签:折半 mid else high 查找 low

问题:N个有序整数数列已经放在一堆数组中,利用二分查找法,查找整数m在数组中的位置,若找到则输出其下标值,反之则输出“not be founded”。

分析:首先定义整型变量,low,high,k,mid,其中low=0,high=N-1,k可以随便赋值一个小于0的数,输入所要查找的数m、,根据题干,这个数列是由小到大排列的,在while循环中,mid=(low+high)/2;if(m<a[mid]),令high=mid-1,else if(m>a[mid]),else if(m==a[mid]),令k=mid,最后判断k是否大于0,输出mid或not be founded。

 

#include<stdio.h>
#define N 10
int main()
{

int a[N]={1,22,33,44,55,66,79,556,665,777};
int mid,m,low=0,high=N-1,k=-10;
scanf("%d",&m);
while(low<=high)
{
mid=(low+high)/2;
if(m<a[mid])
{
high=mid-1;
}
else if(m>a[mid])
{

low=mid+1;
}
else if(m==a[mid])
{
k=mid;
break;
}

}
if(k>=0)
printf("%d",k);
else if(k<0)
printf("not found");
return 0;
}

 

标签:折半,mid,else,high,查找,low
From: https://www.cnblogs.com/qian-heng/p/17338436.html

相关文章

  • 二分查找例题与模板(蓝桥杯复习+例题讲解+模板c++)
    文章目录二分模板1460.我在哪?102.最佳牛围栏113.特殊排序二分模板本文所使用的二分模板都是确保最终答案落在[L,R]以内,循环以L==R结束,每次二分的中间值会使mid成为左右区间的二者之一。单调递增序列找大于等于x的最小的值:区间的划分[l,mid][mid+1,r]while(l<r){ intmid......
  • js find 方法,查找到所需数值,立即返回,不会再继续循环
    注意和filter区别......
  • 二分查找:剑指 Offer 53 - I. 在排序数组中查找数字 I
    题目描述:统计一个数字在排序数组中出现的次数。 提示:•0<=nums.length<=105•-109 <=nums[i] <=109•nums 是一个非递减数组•-109 <=target <=109 解题思路:排序数组中的搜索问题,首先想到二分法解决。排序数组nums中的所有数字target......
  • 折半查找
    问题描述:  N个有序整数数列已放在一堆数组中,利用二分查找法查找整数m在数组中的位置。若找到,则输出其下表值,反之则输出“Notbefound!”  1.定义一个最低值位数low=0,定义一个最高值位数high=N-1;  2.当low<=high时计算mid=(low+high)/2;  3.如果要找的值m......
  • 二分查找
    给定一个 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]......