首页 > 其他分享 >C学习6

C学习6

时间:2023-08-17 18:12:31浏览次数:54  
标签:binary return int ret 学习 arr1 printf

1、通过自定义函数做二分查找

#include<stdio.h>
int binary_search(int arr[], int x, int sz)
{
    int left = 0;
    int right = sz - 1;
    while (left <= right)
    {
        int mid = (left + right) / 2;
        if (arr[mid] < x)
        {
            left = mid + 1;
        }
        else if (arr[mid] > x)
        {
            right = mid - 1;
        }
        else
        {
            return mid;
        }
    }
    return -1;
}

int main()
{
    int arr1[] = { 1,2,3,4,5,6,7,8,9,10 };
    int n;
    int sz1 = sizeof(arr1) / sizeof(arr1[0]);
    printf("请输入要查找的数据:");
    scanf_s("%d", &n);
    int ret = binary_search(arr1, n, sz1);
    if (ret == -1)
    {
        printf("找不到");
    }
    else
    {
        printf("找到了,下标是:%d\n",ret);
    }
    return 0;
}

重点在于binary_search函数部分,while条件为<=而不是<,不然会找不到。

2、利用头文件包含来做函数引用

.h头文件里放函数声明

.cpp文件里放函数体

 主程序里就可以#include"add.h"了

 这样可以精简主程序、灵活调用各个模块,有种模块化的美XD

3、为了避免将来的大工程里、多人共同作业的情况下、重复包含文件(重复拷贝进去)造成的资源占用过高和冗余,在.h头文件里使用如下语句

 

标签:binary,return,int,ret,学习,arr1,printf
From: https://www.cnblogs.com/AvalonForLovers/p/17638412.html

相关文章

  • Python学习日记 2023年8月17日
    今天有点懒啊,做的东西少了点importosimportjiebaimportwordcloudimportimageio#pho=imageio.imread('7848.jpg')f=open('口红.txt')txt=f.read()txt_list=jieba.lcut(txt)string=''.join(txt_list)wc=wordcloud.WordCloud(......
  • 《Java编程思想第四版》学习笔记14
    //:Frog.java//TestingfinalizewithinheritanceclassDoBaseFinalization{publicstaticbooleanflag=false;}classCharacteristic{Strings;Characteristic(Stringc){s=c;out.println("Creating......
  • 《Java编程思想第四版》学习笔记15
    初始化的实际过程是这样的:(1)在采取其他任何操作之前,为对象分配的存储空间初始化成二进制零。(2)就象前面叙述的那样,调用基础类构建器。此时,被覆盖的draw()方法会得到调用(的确是在RoundGlyph构建器调用之前),此时会发现radius的值为0,这是由于步骤(1)造成的。(3)按照原先声明的......
  • 【狂神说Java】Java零基础学习笔记-JavaSE总结
    【狂神说Java】Java零基础学习笔记-JavaSE总结JavaSE总结:......
  • HCIP学习(2)-- 路由引入
    一.路由引入的基本概念路由引入指的是将路由信息从一种路由协议发布到另一种路由协议的操作。通过路由引入,可以实现路由信息在不同路由协议间传递;执行路由引入时,还可以部署路由控制,从而实现对业务流量的灵活把控。二.实例讲解设备编号端口IP配置......
  • 【狂神说Java】Java零基础学习笔记-异常
    【狂神说Java】Java零基础学习笔记-异常异常01:Error和Exception什么是异常实际工作中,遇到的情况不可能是非常完美的。比如:你写的某个模块,用户输入不一定符合你的要求、你的程序要打开某个文件,这个文件可能不存在或者文件格式不对,你要读取数据库的数据,数据可能是空的等。我们......
  • javascript学习笔记day3
    今天没做啥笔记都是些学了的基础知识,学的都是像while,switch这些基础的语法,下面带是笔记++i前置运算和i++后置运算的区别:前置运行先相加再计算,后端运算先计算完再++。比较符也有隐式转换brank退出循环continue退出本次循环继续下次循环 顺便把while的循环作业一起放上来了,这个......
  • seata学习-数据源代理
    代理的动机AT模式下执行undo-log回滚日志代理的是DateSource这个类手动代理即手动注入一个DataSourceProxy,如下@BeanpublicDataSourcedruidDataSource(){returnnewDruidDataSource()}//这里会返回名字为"dataSource"的Bean,这里@Primary@Bean(......
  • MongoDB入门到精通学习路线?深入讲解
    MongoDB入门到精通学习路线?深入讲解学习MongoDB可以按照以下路线进行:1.学习基本概念:掌握MongoDB的基本概念,包括文档,集合,数据库,索引等。了解MongoDB与传统关系数据库的区别。2.安装和配置MongoDB:学习如何安装和配置MongoDB,包括选择适当的版本和安装方法,并配置正确的环境变量。......
  • 算法学习笔记-逆元
    前言:还记得小学学的倒数吗?倒数的定义大概是若\(ax=1\),则称\(x\)为\(a\)的倒数。而逆元,其实可以看做在模意义下的倒数。也就是\(ax\equiv1\pmodp\),且\(a\)与\(p\)互质,则称\(x\)为\(a\)在模\(p\)意义下的乘法逆元,记作\(a^{-1}\)。本文就将简要介绍求逆元的......