C语言 ,有15个数按由大到小顺序存放在一个数组中,输入一个数,要求用拆半查找法找出该数是数组中的第几个元素的值,如果该数不在数组中,则输出“无此数”
注意此题是要求用拆半法,当然前提必须是数组已经排好序的
#include<stdio.h>
int main()
{ int t[9]={1,3,5,7,9,11,13,15,17};
int start=0,end=8,c,mid; //start表示查找区间开始的位置,end是查找区间的最末位置
scanf("%d",&c);
while(start<=end)
{
mid=(start+end)/2;
if(c==t[mid])
{
printf("%d ,%d ",t[mid],mid);
break;
}
else if(c>t[mid])
start=mid+1; // 如果要查找的数字大于中间数,这个时候开始的位置要从中间位置加一
else end=mid-1; //如果查找的数字小于中间数,这个时候结束的位置从要中间减一
}
if(a>b)
printf("无此元素");
system("pause");
return 0;
}
声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。