int cmp(const void*a,const void*b) {
return *(int*)b - *(int*)a;
}
int main() {
int arr[15] = { 0 };
for (int i = 0; i < 15;i++) {
scanf("%d",&arr[i]);
}
int num = 0;
printf("输入查找数:");
scanf("%d",&num);
qsort(arr,15,sizeof(int),cmp);
int left = 0;
int flag = 0;
int right = sizeof(arr) / sizeof(arr[0]) - 1;
while (left<=right) {
int middle = left+(right - left) / 2;
if (num == arr[middle]) {
printf("%d\n", middle+1);//真实值和我计算的值差1
flag = 1;
break;
}
else if (num > arr[middle]) {
right = middle-1;//因为middle不是,所以把left移到middle的下一位
}
else left = middle+1;
}
if (!flag) {
printf("未找到\n");
}
return 0;
}
登录后提交答案