数据结构算法—递归实现折半查找算法

数据结构算法—递归实现折半查找算法

算法思想:

折半查找 适用于 有序表。 这个难度不大,注释也没写多少,有疑问私信我就行!

有序表的存储结构
typedef struct{ 
	int a[30]; 
	int length; 
}sqtable; 
有序表的创建
sqtable  st;
int b=0;
void createst(int k){
	int i;
	printf("Please input  data:");
	st.a[0]=-100; // 哨兵。
	for (i=1;(!b&&(i<=k));i++){
		scanf("%d",&(st.a[i]));
		if (st.a[i]<st.a[i-1]){ // 顺序输错,就程序结束,报错。是一个异常处理。不然以后没办法查找了。
    		printf("Input data error.\n");
    		b=1;
    	}
   	}
	if (!b){
    	st.length=k;
    	printf("The table is builted.\n");
    	}
}

完整代码:

#include<stdio.h> 
typedef struct{ 
	int a[30]; 
	int length; 
}sqtable; 
sqtable  st;
int b=0;
void createst(int k){
	int i;
	printf("Please input  data:");
	st.a[0]=-100;
	for (i=1;(!b&&(i<=k));i++){
		scanf("%d",&(st.a[i]));
		if (st.a[i]<st.a[i-1]){
    		printf("Input data error.\n");
    		b=1;
    	}
   	}
	if (!b){
    	st.length=k;
    	printf("The table is builted.\n");
    	}
}
int Search_Bin(sqtable st,int key,int low,int high){
	int mid;
	if(low>high){
		return -1;
	}
	else {
		mid = (low+high)/2;
		if(st.a[mid]==key)
			return mid;
		if(st.a[mid]<key)
			return Search_Bin(st,key,mid+1,high);
		if(st.a[mid]>key)
			return Search_Bin(st,key,low,mid-1);
	}
}
int main(){
	int n,x,result;
	printf("Please input n:");//序列长度 
	scanf("%d",&n);
	createst(n);
	if (b==0) {
		printf("Please input you want find value:");
		scanf("%d",&x);
		result = Search_Bin(st,x,1,st.length);
		if(result == -1)
			printf("未找到!");
		else{
			printf("找到查找的元素:%d",result);
		}
	}

}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值