<数据结构>折半查找算法实现

文章目录

  • 前言
  • 一、折半查找算法(采用顺序表存储结构)
  • 二、使用步骤
    • 1.代码功能实现
  • 总结


前言

提示:本篇主要是本小白大学期间对数据结构实验的一些基本代码功能实现,希望对一同数据结构的伙伴有所帮助。


提示:以下是本篇文章正文内容,下面案例可供参考

一、折半查找算法(采用顺序表存储结构)

要求:编写函数,建立有序表,采用折半查找实现某一已知的关键字的查找。(采用顺序表存储结构)

折半算法思想:设置两个指针low,high,分为上界和下界,对于初始low=0
high=n-1;
令mid=(low+high)/2
前提:具有升序或者降序关系
优点:查询效率高

二、使用步骤

1.代码功能实现

代码如下(示例):

#include
#define N 9//数组个数

extern int binsearch(int *a,int key);

int main()
{
	int i,key; 
	char ch;
	int a[N]={1,2,3,6,7,8,9,89,200};//建立有序数组
	while(1){
	printf("please input the key:\n");//输入关键字
	scanf("%d",&key);
 	i = binsearch(a,key);//查询函数
	if(i == -1)
	printf("search error\n");
	else
	printf("search %d at %d\n",key,i);
	while(getchar() != '\n');//吸收回车字符
	printf("continue?(y|Y):\n");//判断是否继续查询
	scanf("%c",&ch);
	if(ch =='y' ||ch == 'Y')
		continue;
	else 
	  	break;
	}
}

int binsearch(int *a,int key)
{
	int i,low,high,mid;
	low =a[0];//下界
	high = a[N-1];//上届
	while(1)//持续查询
	{
		mid= (low +high)/2;
		if(mid == key)
			return mid ;
		else if(mid < key)
		{
			low = mid + 1;//查询的数值大于mid,下届上移
		}else{
			high = mid -1 ;//查询的数值小于mid,上界下移
		}
	}
	return -1;	
}

总结

提示:本篇主要是对折半查找的基本功能代码实现,代码与逻辑思考总体不难,算法主函数中若包含有持续判断时,需要对回车\n符号记得设置getchar函数才能正常进入判断循环.
希望能对你理解折半查找算法带来一定的帮助

你可能感兴趣的:(数据结构,算法,数据结构,c语言,二分查找)