分治法求最大最小元
阿新 • • 發佈:2019-01-26
#include<iostream> using namespace std; int fmax(int a, int b) { return (a > b) ? a : b; } int fmin(int a, int b) { return(a < b) ? a : b; } void maxmin(int *l, int &max, int &min, int a, int b) { int x1, y1, x2, y2; int mid; if (b-a <= 1) { if (l[a]>l[b]) { min = l[b]; max = l[a]; } else { max = l[b]; min = l[a]; } } else{ mid = (a + b) / 2; maxmin(l, x1, y1, a, mid); maxmin(l, x2, y2, mid + 1, b); max = fmax(x1, x2); min = fmin(y1, y2); } } int main() { int l[10]; int max, min; for (int i = 0; i < 10; i++) cin >> l[i]; maxmin(l, max, min, 0, 9); cout << max << " "<<min << endl; return 0; }