二分查找(c语言)

一.什么是二分查找

在⼀个升序的数组中查找制定的数字n,很容易想到的⽅法就是遍历数组,但是这种⽅法效率⽐较低,
⽐如我买了⼀双鞋,你好奇问我多少钱,我说不超过300元。你还是好奇,你想知道到底多少,我就让
你猜,你会怎么猜?你会1,2,3,4…这样猜吗?显然很慢;⼀般你都会猜中间数字,⽐如:150,然
后看⼤了还是⼩了,这就是⼆分查找,也叫折半查找。

二.代码实现


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");
}

运行结果:
在这里插入图片描述

相关推荐

  1. C语言-二分查找

    2024-03-10 14:08:03       45 阅读
  2. [C语言]二分查找

    2024-03-10 14:08:03       36 阅读
  3. C语言----数组----二分查找

    2024-03-10 14:08:03       35 阅读
  4. 王道c语言-顺序查找二分查找

    2024-03-10 14:08:03       47 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-10 14:08:03       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-10 14:08:03       100 阅读
  3. 在Django里面运行非项目文件

    2024-03-10 14:08:03       82 阅读
  4. Python语言-面向对象

    2024-03-10 14:08:03       91 阅读

热门阅读

  1. node.js中path.join() 和 path.resolve()

    2024-03-10 14:08:03       45 阅读
  2. Git常用命令

    2024-03-10 14:08:03       35 阅读
  3. llama2c(4)之forward、sample、decode

    2024-03-10 14:08:03       47 阅读
  4. 安全运营方案的基本框架和关键要素

    2024-03-10 14:08:03       50 阅读
  5. html2canvas+jsPDF实现前端导出pdf

    2024-03-10 14:08:03       44 阅读
  6. python使用pdfkit把html文本转换成pdf非常慢

    2024-03-10 14:08:03       36 阅读
  7. urllib.error.HTTPError: HTTP Error 400: Bad Request

    2024-03-10 14:08:03       38 阅读
  8. 【DevOps实战篇】原生Docker集群项目向Kubernetes移行

    2024-03-10 14:08:03       33 阅读
  9. 事务(transaction)

    2024-03-10 14:08:03       45 阅读
  10. 清除Mac OS上Xcode占用的空间

    2024-03-10 14:08:03       44 阅读