#include<stdio.h>
void order (int a[]);
void order (int a[])
{
int i,j,k,max,t;
for(i=0;i<15;i++)
{
max=i;
for(j=i+1;j<=14;j++)
{
if(a[max]<a[j])
max=j;
}
if(max!=i)
{
t=a[max];
a[max]=a[i];
a[i]=t;
}
}
}
int search(int a[],int x)
{
int low,high,mid;
low=0;
high=14;
while(low<=high)
{
mid=(low+high)/2;
if(x>a[mid])
low=mid+1;
else if(x<a[mid])
high=mid-1;
else
return mid;
}
return -1;
}
int main(void)
{
int j,x,count;
int a[15]={21,34,52,15,64,75,29,43,2,47,5,1,0,11,13};
order(a);
for(count=0;count<=14;count++)
{
printf("a[%d]=",count);
printf("%d\n",a[count]);
}
scanf("%d",&x);
j=search(a,x);
if(j==-1)
printf("没有可查询的x");
else printf("%d",j);
return 0;
}
你题目是什么?
你题目的解答代码如下:
#include <stdio.h>
void order(int a[]);
void order(int a[])
{
int i, j, k, max, t;
for (i = 0; i < 15; i++)
{
max = i;
for (j = i + 1; j <= 14; j++)
{
if (a[max] < a[j])
max = j;
}
if (max != i)
{
t = a[max];
a[max] = a[i];
a[i] = t;
}
}
}
int search(int a[], int x)
{
int low, high, mid;
low = 0;
high = 14;
while (low <= high)
{
mid = (low + high) / 2;
if (x < a[mid]) // > 改成 <
low = mid + 1;
else if (x > a[mid]) // < 改成 >
high = mid - 1;
else
return mid;
}
return -1;
}
int main(void)
{
int j, x, count;
int a[15] = {21, 34, 52, 15, 64, 75, 29, 43, 2, 47, 5, 1, 0, 11, 13};
order(a);
for (count = 0; count <= 14; count++)
{
printf("a[%d]=", count);
printf("%d\n", a[count]);
}
scanf("%d", &x);
j = search(a, x);
if (j == -1)
printf("没有可查询的x");
else
printf("%d", j);
return 0;
}
如有帮助,望采纳!谢谢!
int search(int a[],int x)
{
int low,high,mid;
low=0;
high=14;
while(low<=high)
{
mid=(low+high)/2;
if(x>a[mid])
low=mid+1;
else if(x<a[mid])
high=mid-1;
else
return mid;
}
return -1;
}