C语言 ,有15个数按由大到小顺序存放在一个数组中,输入一个数,要求用拆半查找法找出该数是数组中的第几个元素的值,如果该数不在数组中,则输出“无此数”

来源:互联网 发布:nginx 允许目录浏览 编辑:程序博客网 时间:2024/05/22 09:04

注意此题是要求用拆半法,当然前提必须是数组已经排好序的

#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\t,%d\t",t[mid],mid);              break;            }          else if(c>t[mid])                  start=mid+1;  // 如果要查找的数字大于中间数,这个时候开始的位置要从中间位置加一       else    end=mid-1; //如果查找的数字小于中间数,这个时候结束的位置从要中间减一    }     if(a>b)       printf("无此元素");     system("pause");    return 0;}
0 0
原创粉丝点击