首页 > 编程语言 >每日编程一小时(第十四天)

每日编程一小时(第十四天)

时间:2023-04-23 20:59:44浏览次数:37  
标签:13 right int 每日 编程 mid 第十四天 left

一.问题描述

编写程序: 用二分法在有序表{3,4,10,13,33,42,46,63,76,78,95,96,120}中查找一个给定的数。

 

二.设计思路

1.定义一个数组a存入上面的数,按从小到大排序

2.输入一个数n

3.设计一个函数f(a,0,13,n),取中间值mid=1+13/2,比较a[mid]和n的大小,若right-left>1&&a[mid]!=x,有若a[mid]>n,left=mid,right不变,则f(a,left,right,n)

若a[mid]<n,right=mid,left不变,f(a,left,right,n)否则若right-left<=1||a[mid]==n,若前者输出yes,否则no

三.流程图

 

四.代码实现

#include<iostream>
using namespace std;
void f(int* a, int n, int left, int right)
{
    int mid = (left + right) / 2;
    if (right - left > 1 && a[mid] != n)
    {
        if (n > a[mid])
        {
            left = (left + right) / 2;
            f(a, n, left, right);
        }
        if (n < a[mid])
        {
            right = (left + right) / 2;
            f(a, n, left, right);
        }
    }
    if (right - left <= 1 || a[mid] == n)
    {
        if (a[mid] == n || a[mid + 1] == n)
            cout<<"yes";
        else cout<<"no";
    }
}
int main()
{
    int n, right, left, a[13] = { 3,4,10,13,33,42,46,63,76,78,95,96,120 };
    cin>>n;
    left = 0;
    right = 13;
    f(a, n, left, right);
}

 

标签:13,right,int,每日,编程,mid,第十四天,left
From: https://www.cnblogs.com/zhenaifen/p/17347681.html

相关文章

  • 每日一小时打卡pc端毕业设计(具有人脸专注度检测和人脸识别的监控功能)
               代码:#coding=utf-8importcv2ascvimportcv2importdatetimeimportbase64importtimeimportimutilsimportdlibfromimutilsimportface_utilsfromscipy.spatialimportdistanceasdistfromPILimportImage,I......
  • 编程一小时2023.4.23
    1.#include<bits/stdc++.h>usingnamespacestd;stringa,s;intb[1005],t,c[1005];voiddivision(){for(inti=t-1;i>=0;i--){if(b[i]%2)b[i-1]+=10;b[i]/=2;}while(b[t-1]==0)t-......
  • 每日打卡
    分糖问题:问题描述:某位老师给小孩子们分糖,10个小孩围在一圈,分糖数量如下:10,2,8,22,16,4,10,6,14,20。每个小孩同时将手中糖果的一半分给右边的小孩,分完后糖果为奇数的小孩可以向老师要一个糖果,问几次后每个小孩的糖果相等问题分析:先通过数学方法进行分析,十个小孩同时给一半的糖果给完后的......
  • 每日打卡-11.2
    一.问题描述定义一个分数类,包含分子、分母实验要求:含有无参的默认构造函数,并进行构造函数的重载;重载分数的加法+、减法-、数乘*这三运算符;重载分数的输入和输出运算符;重载分数的关系运算符==,!=,>=,<=;定义约简函数,使分子分母没有公因子。二.设计思路三.流程图四.伪代码 ......
  • 建民の每日打卡12
    一、问题描述某银行月利息如下: 某人手上有2000元,存期20年。计算出收益最高的方案二、流程设计1.通过循环嵌套穷举出所有满足条件的方案,并计算出收益2.比较收益,将收益最大的一组数据输出三、流程图设计四、代码实现#include<iostream>#include<cmath>usingnamespace......
  • 每天打卡一小时 第十四天 编译四部曲
    第一部曲自然语言找到V的最大值最小值什么是V的最大值 A/B就是V的最大值很好理解将所有最大值找出来其中的最小值便是整体的最大值那么什么是V的最小值  通俗一点就是A差一点就可以被B+1整除(75+1)/4=1919便是最小值找出所有的最小值其中的最大值便是整体的......
  • 编程打卡:给网页做个花里胡哨个格子纹理背景吧。
    编程打卡:给网页做个花里胡哨个格子纹理背景吧。嗯看到Github上面有一个项目,格裙纹理生成器稍微玩了一会儿,感觉这样的纹理或许可以用来做网页的背景,就这样做了。这个项目生成的图片,感觉太精细了,,稍微一个SVG,就有好几MB大,虽然确实惊喜,里面的纹理,用来做裙子什么的说不定真的可以,但......
  • 编程计划
    大二在读......
  • 每日总结2023/4/23
    今天转换思路完成了对于导航到补货站的过程:自己做的始终比不上现有的地图软件,不如跳转到相应的地图软件进行导航。另外在补货历史记录中增加了补货地点一条;更新注册页面。      ......
  • 并发编程(1)-线程与锁
    1.什么是线程?线程的状态与进程的状态非常相似,但线程是在进程内运行的轻量级实体。线程与进程的主要区别是线程共享相同的地址空间,而进程具有独立的地址空间。这意味着在进程中运行的每个线程都可以访问相同的变量和数据结构,而在不同进程中运行的线程则不能访问彼此的变量和数据......