69,373
社区成员
发帖
与我相关
我的任务
分享
#include <stdio.h>
#include <stdlib.h>
int compare(const void *, const void *);
int BinarySearch(int a[], const int *x,int n);
int main(void)
{
int a[10000], i, n, m, middle;
scanf("%d%d", &n, &m);
for (i = 0; i < n; i++)
scanf("%d", &a[i]);
qsort(a, n, sizeof(int), compare); //降序排
if ((middle = BinarySearch(a, &m, n)) != -1)
printf("%d", middle+1); //二分查找
else
printf("not found");
return 0;
}
int BinarySearch(int a[], const int *x, int n)
{
int left = 0;
int right = n - 1;
while (left <= right)
{
int middle = (left + right) / 2;
if (*x == a[middle])
return middle;
if (*x < a[middle])
left = middle + 1;
else
right = middle - 1;
}
return -1;
}
int compare(const void *p, const void *q)
{
return (*(int *)q - *(int *)p);
}