数据结构之折半查找

折半查找的算法思想:

折半查找又称二分查找,它仅仅适用于有序的顺表。

折半查找的基本思想:首先将给定值key与表中中间位置的元素(mid的指向元素)比较。mid=low+high/2(向下取整)

  1. 若key与中间元素相等,则查找成功,返回该元素的存储位置,即mid;
  2. 若key与中间元素不相等,则所需查找的元素只能在中间元素以外的前半部分或后半部分。(至于是前半部分还是后半部分要看key与mid所指向元素的大小关系)
    a.在查找表升序排列的情况下,若给定值key大于中间元素则所查找的元素只可能在后半部分。此时让low=mid+1;
    b.若给定值key小于中间元素则所查找的元素只可能在前半部分。此时让high=mid-1;
cpp 复制代码
#include<stdio.h>
//折半查找   主要方法
int Binary_search(int *array,int length,int key){
	int low=1,high=length,mid;  //如果不浪费空间  则low=0;high=length-1 
	while(low<=high){  //退出循环条件为low>high

		mid=(low+high)/2;
		if(array[mid] == key) return mid;
		else if(array[mid]>key) high=mid-1;
		else low = mid+1;
		
	}
	return -1;
}

int main(){
	
	int a[16]={0},key,temp;//浪费一个空间即下标0   用于对齐 下标 
	printf("请输入15个有序数字:\n"); 
	for(int i=1;i<=15;i++)
	scanf("%d",&a[i]);
	
	printf("请输入所要查找的数字:\n"); 
	scanf("%d",&key);
	
	temp=Binary_search(a,15,key);
	
	if(temp==-1)
		printf("不存在\n"); 
		
	else
	 printf("下标为%d\n",temp); 	 
	
	return 0;

}
相关推荐
CoovallyAIHub3 小时前
181小时视频丢给GPT-5,准确率只有15%——南大联合NVIDIA等五校发布多模态终身理解数据集
深度学习·算法·计算机视觉
CoovallyAIHub4 小时前
CVPR 2026 | GS-CLIP:3D几何先验+双流视觉融合,零样本工业缺陷检测新SOTA,四大3D工业数据集全面领先!
深度学习·算法·计算机视觉
xlp666hub4 小时前
Leetcode 第三题:用C++解决最长连续序列
c++·leetcode
会员源码网5 小时前
构造函数抛出异常:C++对象部分初始化的陷阱与应对策略
c++
有意义6 小时前
深度拆解分割等和子集:一维DP数组与倒序遍历的本质
前端·算法·面试
xlp666hub7 小时前
Leetcode第二题:用 C++ 解决字母异位词分组
c++·leetcode
用户726876103378 小时前
解放双手的健身助手:基于 Rokid AR 眼镜的运动计时应用
算法
Wect8 小时前
LeetCode 17. 电话号码的字母组合:回溯算法入门实战
前端·算法·typescript
不想写代码的星星8 小时前
static 关键字:从 C 到 C++,一篇文章彻底搞懂它的“七十二变”
c++