写这个,主要是为了理解这个思想,题目无关紧要。
#include <stdio.h>
#include <stdlib.h>
int a[20];
int n=15;
int main()
{
void quicksort(int left,int right);
void research(int start,int end);
int i;
for(i=1;i<=n;i++)
{
scanf("%d",&a[i]);
}
quicksort(1,n);
research(1,n);
return 0;
}
void quicksort(int left,int right)
{
if(left>right)
return;
int i,j,t,temp;
temp=a[left];
i=left;
j=right;
while(i!=j)
{
while(a[j]<=temp && i<j)
j--;
while(a[i]>=temp && i<j)
i++;
if(i<j)
{
t=a[i];
a[i]=a[j];
a[j]=t;
}
}
a[left]=a[i];
a[i]=temp;
quicksort(left,i-1);
quicksort(i+1,right);
}
void research(int start,int end)
{
int mid;
int m;
scanf("%d",&m);
while(start<=end)
{
mid=(start+end)/2;
if(m==a[mid])//这句话一定要写在循环里面,不要写在外面;
{
printf("%d\n",mid);
break;
}
else if (m>a[mid])
{
end = mid - 1;
}
else
{
start = mid + 1;
}
}
printf("wucishu!\n");
}