【C语言入门】将15个数按由大到小的顺序存放在一个数组中,输入一个数,要求用折半查找法找出该数是数组中第几个元素。 如果该数不在数组中,则输出“无次数”。
5条回答 默认 最新
社区专家-Monster-XH 2023-12-22 13:07关注基于Monster 组和AIGC的调写:若有帮助,还望采纳~~:
#include <stdio.h> int binarySearch(int arr[], int n, int target) { int left = 0; int right = n - 1; while (left <= right) { int mid = left + (right - left) / 2; if (arr[mid] == target) { return mid + 1; // 返回元素位置(从1开始计数) } else if (arr[mid] < target) { left = mid + 1; } else { right = mid - 1; } } return -1; // 如果找不到,返回-1表示"无次数" } int main() { int arr[15]; int n = 15; // 数组长度 int i, target; printf("请输入15个数按由大到小的顺序存放在数组中:\n"); for (i = 0; i < n; i++) { scanf("%d", &arr[i]); } printf("请输入要查找的数:\n"); scanf("%d", &target); int result = binarySearch(arr, n, target); if (result != -1) { printf("该数在数组中第 %d 个位置。\n", result); } else { printf("无次数。\n"); } return 0; }本回答被题主选为最佳回答 , 对您是否有帮助呢?评论 打赏 举报解决 1无用