二分查找(c语言)

二分查找

一.什么是二分查找

在⼀个升序的数组中查找制定的数字n,很容易想到的⽅法就是遍历数组,但是这种⽅法效率⽐较低,

⽐如我买了⼀双鞋,你好奇问我多少钱,我说不超过300元。你还是好奇,你想知道到底多少,我就让

你猜,你会怎么猜?你会1,2,3,4...这样猜吗?显然很慢;⼀般你都会猜中间数字,⽐如:150,然

后看⼤了还是⼩了,这就是⼆分查找,也叫折半查找。

二.代码实现

c 复制代码
int main()
{
	int arr[] = { 1,2,3,4,5,6,7,8,9,10 };
	int left = 0;
	int right = sizeof(arr) / sizeof(arr[0]) - 1;
	int key = 0;
	scanf("%d", &key);
	int mid = 0;
	int find = 0;
	while (left <= right)
	{
		mid = (left + right) / 2;
		if (arr[mid] > key)
		{
			right = mid - 1;
		}
		else if (arr[mid] < key)
		{
			left = mid + 1;
		}
		else
		{
			find = 1;
			break;
		}
	}
	if (1 == find)
		printf("找到了,下标是%d\n", mid);
	else
		printf("找不到\n");
}

运行结果:

相关推荐
pystraf11 分钟前
UOJ 228 基础数据结构练习题 Solution
数据结构·c++·算法·线段树
海底火旺20 分钟前
破解二维矩阵搜索难题:从暴力到最优的算法之旅
javascript·算法·面试
祁同伟.29 分钟前
【数据结构 · 初阶】- 堆的实现
c语言·数据结构
夜夜敲码42 分钟前
C语言教程(十六): C 语言字符串详解
c语言·开发语言
宋康1 小时前
C语言结构体和union内存对齐
c语言·开发语言
学习噢学个屁1 小时前
基于51单片机的超声波液位测量与控制系统
c语言·单片机·嵌入式硬件·51单片机
黄昏ivi1 小时前
电力系统最小惯性常数解析
算法
独家回忆3642 小时前
每日算法-250425
算法
Cao1234567893212 小时前
简易学生成绩管理系统(C语言)
c语言·开发语言
烁3472 小时前
每日一题(小白)模拟娱乐篇33
java·开发语言·算法