1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253 |
- #include <stdio.h>
- #include <stdlib.h>
- // 辅助函数:比较函数,用于qsort排序
- int compare(const void *a, const void *b) {
- return (*(int *)a - *(int *)b);
- }
- int findMedianNumber(int arr[], int n) {
- // 先对数组进行排序
- qsort(arr, n, sizeof(int), compare);
- // 检查中位数是否符合要求
- int medianIndex = n / 2;
- int median = arr[medianIndex];
- // 计算比中位数小和大的元素数量
- int smaller = 0, larger = 0, i;
- for (i = 0; i < n; i++) {
- if (arr[i] < median) {
- smaller++;
- } else if (arr[i] > median) {
- larger++;
- }
- }
- // 检查条件
- if (smaller == larger) {
- return median;
- } else {
- return -1;
- }
- }
- int main() {
- int n;
- // 读取整数序列的数量
- scanf("%d", &n);
- int arr[n], i;
- // 读取整数序列
- for (i = 0; i < n; i++) {
- scanf("%d", &arr[i]);
- }
- // 找到中间数
- int result = findMedianNumber(arr, n);
- // 输出结果
- printf("%d\n", result);
- return 0;
- }
|