牛刀小试---二分查找(C语言)
- 开源代码
- 2025-08-06 03:03:01

题目:在给定的升序数组中查找指定的数字n,并输出其下标 代码举例: #include <stdio.h> 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 = 7;//要找的数字 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"); return 0; } 运行结果: 题目解析: 1. 明确概念:
二分查找,也叫折半查找,是一种在有序数组中查找特定元素的算法。它通过比较中间元素和目标值的大小,将查找范围缩小为一半,直到找到目标元素或者查找范围为空。
2. 知其原理(步骤)1. 确定搜索范围:首先,需要确定要在哪个区间内进行查找。这可以通过比较目标值与中间元素的大小来确定。如果目标值小于中间元素,则可以确定目标值只可能存在于前半部分;如果目标值大于中间元素,则可以确定目标值只可能存在于后半部分;如果目标值等于中间元素,则可以直接找到目标值。
2.划分区间:根据目标值与中间元素的比较结果,可以将搜索范围划分为两个子区间。如果目标值小于中间元素,则将搜索范围缩小为前半部分;如果目标值大于中间元素,则将搜索范围缩小为后半部分。
3.在确定了新的搜索范围后,重复步骤1,2,直到找到目标值。
3. 思路方法:知道其原理,将其转化为代码,通过定义左右下标,确定搜索范围,通过定义中间元素下标,确定中间元素,通过定义变量key表示所找目标值,通过定义变量flag,用于判断输出;比较目标值与中间元素的大小,根据目标值与中间元素的比较结果,通过左右下标的改变,缩小搜索范围,通过while循环实现重复;最后通过变量flag进行判断输出。
结言:本文将一维数组的使用与循环相结合,实现二分查找,进一步巩固数组和循环相关知识。
牛刀小试---二分查找(C语言)由讯客互联开源代码栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“牛刀小试---二分查找(C语言)”
上一篇
C++笔记