用c语言写出采用分治法求整数序列中的最大最小元素。
时间: 2023-05-22 19:00:45 浏览: 152
以下是一个使用分治法求整数序列中的最大最小元素的C语言代码:
#include <stdio.h>
struct Pair {
int min;
int max;
};
struct Pair findMinMax(int arr[], int low, int high) {
struct Pair minMax, leftMinMax, rightMinMax;
int mid;
// 如果序列中只有一个元素
if (low == high) {
minMax.min = arr[low];
minMax.max = arr[low];
return minMax;
}
// 如果序列中有两个元素
if (high == low + 1) {
if (arr[low] > arr[high]) {
minMax.max = arr[low];
minMax.min = arr[high];
} else {
minMax.max = arr[high];
minMax.min = arr[low];
}
return minMax;
}
// 如果序列中有多个元素
mid = (low + high) / 2;
leftMinMax = findMinMax(arr, low, mid);
rightMinMax = findMinMax(arr, mid + 1, high);
// 合并左右两个子序列的最大最小值
if (leftMinMax.min < rightMinMax.min) {
minMax.min = leftMinMax.min;
} else {
minMax.min = rightMinMax.min;
}
if (leftMinMax.max > rightMinMax.max) {
minMax.max = leftMinMax.max;
} else {
minMax.max = rightMinMax.max;
}
return minMax;
}
int main() {
int arr[] = {3, 5, 1, 9, 8, 2, 4, 7, 6};
int n = sizeof(arr) / sizeof(arr[0]);
struct Pair minMax = findMinMax(arr, 0, n - 1);
printf("最小值:%d\n", minMax.min);
printf("最大值:%d\n", minMax.max);
return 0;
}
阅读全文