C语言折半查找法接着怎么写?在线等,谢谢!

来源:百度知道 编辑:UC知道 时间:2024/05/26 15:52:17
题目:用选择法对10个数字排序(从小到大),然后输入一个数,用折半法找出该数是数组中第几个元素的值,如果该数不在数组中,则打印出“无此数”。源程序命名为4.c
其中选择法部分已经写出,折半法怎么写啊?希望大侠尽量用折半法最常规的思路。
#include<stdio.h>
void main()
{
int a[11],i,t,j;
printf("please input 10 numbers :\n");
for(j=1;j<11;j++)
scanf("%d",&a[j]);
printf("\n");
for(j=1;j<11;j++)
for(i=j+1;i<11;i++)
if (a[j]<a[i])
{
t=a[j];
a[j]=a[i];
a[i]=t;
}
先谢谢了!
sorry了,现在学校机房不让上QQ啊。

接在你的最后一个}后面的:

puts("Please input the number to be found");
scanf("%d",&t);
putchar('\n');
i=1;
j=10;
//i,j表示在在数组a的第i个到第j个元素的范围内查找t
while (i<j)//i==j表明t只有可能是数组a的第i个元素
{
if (t<=a[(i+j)/2]) j=(i+j)/2;//此时t在第i个到第(i+j)/2个元素的范围内
else i=(i+j)/2+1;//此时t在第(i+j)/2+1个到第j个元素的范围内
}
if (a[i]!=t) puts("No such element!");//没找到
else printf("%d is element %d of the array.\n",t,i);//找到了
}

c 语言学习群11660066
我不会所以不能帮你解答
#include "stdio.h"
#include "conio.h"
main()
{
int a[15]={15,14,13,12,11,10,9,8,7,6,5,4,3,2,1};
int k,top,bot,mid;
scanf("%d",&k);
top=14;bot=0;
while(bot<=top)
{
mid=(top+bot)/2;
printf("bot=%d,top=%d,mid=%d,a[%d]=%d\n",bot,top,mid,mid,a[mid]);
if(k==a[mid])
{
printf("%d",mid);