【C语言】二分查找

server/2025/2/13 19:58:29/

文章目录

    • 二分查找
      • Tips

二分查找

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

#include <stdio.h>
#include <stdlib.h>
#include <time.h>char binary_search(char arr[], char length, char target)
{char left = 0;char right = length - 1;char mid;while(left <= right){mid = (left + right) / 2;if (arr[mid] > target){right = mid - 1; }else if(arr[mid] < target){left = mid + 1;}else{return mid;     }}return -1;
}int main()
{char arr[10] = {1,2,3,4,5,6,7,8,9,10};char length = sizeof(arr) / sizeof(arr[0]);for (int i = 0; i < 10; i++){printf("%d ", arr[i]);if (i == 9) {printf("\n");} }printf("*********************************");printf("target: %d\n",arr[binary_search(arr, length, 7)]);return 0;
}

Tips

下面的代码将返回指针的大小,而不是数组的大小。如果将数组传递给函数,数组会退化为指针,此时 sizeof 将返回指针的大小,而不是数组的大小。

#include <stdio.h>void printLength(int arr[]) {size_t length = sizeof(arr) / sizeof(arr[0]); // 错误!arr在这里是指针printf("数组的长度是: %zu\n", length);
}int main() {int arr[10];printLength(arr); // 输出的结果通常是错误的return 0;
}

这里的调用的函数中的sizeof(arr)是获取指针内存占字节的大小(也就是系统位数/8)


http://www.ppmy.cn/server/167410.html

相关文章

git 提示 fatal: The remote end hung up unexpectedly

我在 git push 的时候遇到报错 fatal: The remote end hung up unexpectedly 解决方法如下&#xff1a; 1. 调整缓存限制&#xff08;大文件推送&#xff09; git config --global http.postBuffer 524288000 # 设置缓存为500MB git config --global https.postBuffer 52428…

机器学习数学基础:22.对称矩阵的对角化

一、核心概念详解 &#xff08;一&#xff09;内积 定义与公式&#xff1a;在 n n n维向量空间中&#xff0c;对于向量 x ⃗ ( x 1 , x 2 , ⋯ , x n ) \vec{x}\ (x_1,x_2,\cdots,x_n) x (x1​,x2​,⋯,xn​)和 y ⃗ ( y 1 , y 2 , ⋯ , y n ) \vec{y}\ (y_1,y_2,\cdots,y_…

基于 Docker 搭建 Elasticsearch + Kibana 环境

一、Elasticsearch 1. 下载镜像 elasticsearch镜像不支持latest标签&#xff0c;必须指定版本号 % docker pull elasticsearch:8.17.2 2. 启动容器 参考官方文档 https://www.elastic.co/guide/en/elasticsearch/reference/7.5/docker.html % docker run -p 9200:9200 -p 9…

Windows11+PyCharm利用MMSegmentation训练自己的数据集保姆级教程

系统版本&#xff1a;Windows 11 依赖环境&#xff1a;Anaconda3 运行软件&#xff1a;PyCharm 一.环境配置 通过Anaconda Prompt(anaconda)打开终端创建一个虚拟环境 conda create --name mmseg python3.93.激活虚拟环境 conda activate mmseg 4.安装pytorch和cuda tor…

PortSwigger——WebSockets vulnerabilities

文章目录 一、WebSockets二、Lab: Manipulating WebSocket messages to exploit vulnerabilities三、Lab: Manipulating the WebSocket handshake to exploit vulnerabilities四、Using cross-site WebSockets to exploit vulnerabilities4.1 跨站WebSocket劫持&#xff08;cro…

C++ ——从C到C++

1、C的学习方法 &#xff08;1&#xff09;C知识点概念内容比较多&#xff0c;需要反复复习 &#xff08;2&#xff09;偏理论&#xff0c;有的内容不理解&#xff0c;可以先背下来&#xff0c;后续可能会理解更深 &#xff08;3&#xff09;学好编程要多练习&#xff0c;简…

Oracle 随机数0-100000

Oracle 随机数0-100000 在Oracle数据库中生成一个随机数&#xff08;例如&#xff0c;0到100000之间的随机数&#xff09;&#xff0c;你可以使用DBMS_RANDOM包中的VALUE函数。DBMS_RANDOM.VALUE函数允许你指定随机数的范围。 方法1&#xff1a;使用DBMS_RANDOM.VALUE SELEC…

第41天:Web开发-JS应用微信小程序源码架构编译预览逆向调试嵌套资产代码审计

#知识点 1、安全开发-微信小程序-搭建&开发&架构&安全 2、安全开发-微信小程序-编译调试&反编译&泄露 一、小程序创建&#xff08;了解即可&#xff09; 1、下载微信开发者工具 2、创建小程序模版引用 https://developers.weixin.qq.com/miniprogram/dev/d…