C语言问题!急需!请各位高手帮忙!

来源:百度知道 编辑:UC知道 时间:2024/05/23 03:18:11
有15个数按由大到小顺序存放一个数组,输一个数,要求用折半查找法找出该数是数组中第几个元素的值。如果该数不在数组中,则打印出“无此数”。
请各位C语言高手多多指教!小弟不胜感激!~~~~~~~

#include <stdio.h>
void search(int a[],int k);
void main()
{
int a[15]={15,14,13,12,11,10,9,8,7,6,5,4,3,2,1};
search(a,8);
}

void search(int a[],int k)
{
int low,hig,mid;
low=0;hig=14;
mid=(low+hig)/2;
while ((a[mid]!=k)&&low<=hig)
{
if(a[mid]<k)
hig=mid-1;
else
low=mid+1;
mid=(low+hig)/2;
}
if(low>hig)
printf("Not found!\n");
else
printf("the number is the %d\n",mid);
}

#include <stdio.h>

void main()
{
int data[15];
int i, j, k;
int n;
for (i = 0; i < 15; i++)
{
scanf("%d", &n);
for (j = 0; j < i; j++)
{
if (n > data[j])
{
for (k = i; k > j; k--)
{
data[k] = data[k - 1];
}
break;
}
}
data[j] = n;
}

scanf ("%d", &n);
int b