数据结构之折半查找

 

折半查找的算法思想:

折半查找又称二分查找,它仅仅适用于有序的顺表。
折半查找的基本思想:首先将给定值key与表中中间位置的元素(mid的指向元素)比较。mid=low+high/2(向下取整)

  1. 若key与中间元素相等,则查找成功,返回该元素的存储位置,即mid;
  2. 若key与中间元素不相等,则所需查找的元素只能在中间元素以外的前半部分或后半部分。(至于是前半部分还是后半部分要看key与mid所指向元素的大小关系)
    a.在查找表升序排列的情况下,若给定值key大于中间元素则所查找的元素只可能在后半部分。此时让low=mid+1;
    b.若给定值key小于中间元素则所查找的元素只可能在前半部分。此时让high=mid-1;
#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;

}

相关推荐

  1. 折半查找(数据结构实训)

    2024-07-10 04:40:02       60 阅读
  2. 数据结构散列查找

    2024-07-10 04:40:02       39 阅读
  3. 数据结构查找的总结

    2024-07-10 04:40:02       31 阅读

最近更新

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

    2024-07-10 04:40:02       66 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-10 04:40:02       70 阅读
  3. 在Django里面运行非项目文件

    2024-07-10 04:40:02       57 阅读
  4. Python语言-面向对象

    2024-07-10 04:40:02       68 阅读

热门阅读

  1. 海致科技实施实习生面试

    2024-07-10 04:40:02       20 阅读
  2. go获取正在运行的函数并及时捕获panic

    2024-07-10 04:40:02       23 阅读
  3. C语言中的static关键字

    2024-07-10 04:40:02       30 阅读
  4. LeetCode 202. 快乐数

    2024-07-10 04:40:02       29 阅读
  5. halcon学习

    2024-07-10 04:40:02       30 阅读
  6. MySQL快速安装(mysql8.0.30区别之前yum安装)

    2024-07-10 04:40:02       24 阅读
  7. FastGPT本地手动部署(一)mongodb和pgvector的安装

    2024-07-10 04:40:02       27 阅读
  8. 字符串

    2024-07-10 04:40:02       28 阅读
  9. 494. 目标和

    2024-07-10 04:40:02       26 阅读
  10. 微信小程序常用的事件

    2024-07-10 04:40:02       31 阅读