C语言实现二分法查找某个数字(超详细)

一、题目要求

在一个有序数组中,查找某一个数字,如果能找到,则输出它的下标,如果找不到,输出该数字不存在。

二、解题思路

有一种简单的方法是遍历整个数组,但是这种方法的时间复杂度较高,且逼格不够高。所以我们采用一种较为高级的方法。

二分法,顾名思义,就是把数组分成两部分,每次都分成两部分,这样一下子就能缩小一半的范围。为了便于大家理解,这里我举个栗子:你买了一杯饮料,并且说价格在20之内。让我猜多少钱,那我肯定会先猜10元,然后你说猜低了,那我就会再猜15元,这时你又说猜高了,那我就会猜12元,然后再问几次,这时就可以猜出饮料的价格了。这种从中间折半猜价格的方法就是二分法。

画个图便于大家理解:

 粉色的数字⭕️1,代表第一次猜的价格,

 粉色的数字⭕️2,代表第二次猜的价格,

 粉色的数字⭕️3,代表第三次猜的价格,

在图里可以发现,范围是一半的在缩小,二分法也是这样的原理。

三、代码解题

#include <stdio.h>
int main()
{
    int input = 0;              //初始化要查找的数字
    int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };//创建一个有序数组
 	printf("请输入你要查找的数字->");
 	scanf("%d", &input);
 	int sz= sizeof(arr) / sizeof(arr[0]);//sz是数组的长度
    //sizeof这个函数是用来求数组的长度的,单位是字节。
    //sizeoff(arr)求出这个数组的总长度,sizeoff(arr【0】)求出一个字符的长度
    //总长度/
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值