折半查找法寻数

来源:互联网 发布:java语言培训学校 编辑:程序博客网 时间:2024/05/22 03:37

折半查找法基本思想(数组元素降序):

有点类似于数学上二分法,即每次找出区间中间元素进行比较,若中间元素恰好等于该数,输出该数;若大于中点元素,取左区间,否则取右区间,不断收缩区间;当区间左端点大于右端点,结束查找,输出该数组无此元素;

下面给出代码,实现方法较多:

#include<stdio.h>int main(){int str[15]={140,130,120,110,100,90,80,70,60,50,40,30,20,10,0};//降序数组int p;//起点int r;//终点int mid;//中点int num;printf("please enter the num\n");scanf("%d",&num);//从键盘获得要查找的数p=0,r=14;//初值while(p<=r){mid=(p+r)/2;if(num==str[mid])//恰好等于中点元素情况{printf("str[%d]=%d\n",mid,num);break;}else if(num>str[mid])r=mid-1;//降序数组,取左区间else p=mid+1;//取右区间}if(p>r) printf("no num\n");return 0;}

下面是测试数据:



要注意端点值:






0 0
原创粉丝点击