// 题目是数组15个数排序,然后输入一个数看是否在里面,并且用折半法找出该数下标
#include<stdio.h>
#define N 15
int Date(int a[],int n);
int Print(int a[],int n);
int Search(int a[],int b,int c);
int main()
{
int n,x,b,c;
int a[N]={1,56,24,89,63,44,50,87,99,64,25,64,86,45,82};
Date(a,n); //排序
printf("成绩顺序是:\n");
Print(a,n); //打印排序结果
Search(a,b,c);
return 0;
}
int Date(int a[],int n)
{
int i,j,k,temp1;
for(i=0;i<N-1;i++)
{
k=i;
for(j=i+1;j<N;j++)
{
if(a[j]>a[k])
{
k=j;
}
}
if(k!=i)
{
temp1=a[k];a[k]=a[i];a[i]=temp1;
}
}
}
int Print(int a[],int n)
{
int i;
for(i=0;i<N;i++)
{
printf("%101d%4d\n",a[i]);
}
}
int Search(int a[],int b,int c)
{
int low=0,high=N-1,mid,x;
printf("输入一个数:");
scanf("%d",&x);
while(low<=high)
{
mid=(high+low)/2;
if(x>a[mid])
low=mid+1;
else if(x<a[mid])
high=mid-1;
else
return mid;
}
return -1;
}