首页 > 代码库 > 折半查找的递归改写
折半查找的递归改写
【问题描述】 针对以非递增有序表表示的静态查找表,编写递归的折半查找算法。
【输入形式】该静态查找表从下标1开始存放数据,存放数据按照非递增顺序,具体输入形式如下:
5 //输入元素个数
33 29 25 20 12 //按照非递增顺序连续输入多个数,每个数之间用一个空格隔开
29 //输入需要查找的数
【输出形式】如果找到则输出该数据在查找表中的下标,如果找不到则输出0
如 查找29则会输出2
【样例输入】5
33 29 25 20 12
29
【样例输出】 2
#include<stdio.h> int search(int key[],int low,int high,int k) { int mid; if(high<low) return -1; else { mid=(low+high)/2; if(key[mid]==k) return mid; if(k>key[mid]) return search(key,low,mid-1,k); else return search(key,mid+1,high,k); } } int main() { int n,i,p,add; int a[20]; scanf("%d",&n); for(i=1;i<=n;i++) { scanf("%d ",&a[i]); } scanf("%d",&p); add=search(a,1,n,p); if(-1!=add) printf("%d",add); else printf("0"); return 0; }
折半查找的递归改写
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。