3*n/2时间内求出最大最小值
#include<iostream> using namespace std; void getMaxMin(int a[], int len) { int max, min; if (len % 2) { max = min = a[0]; for (int i = 1; i < len; i += 2) { if (a[i] < a[i + 1]) { if (a[i + 1]>max) { max = a[i + 1]; } if (a[i] < min) { min = a[i]; } } else { if (a[i]>max) { max = a[i]; } if (a[i + 1] < min) { min = a[i + 1]; } } } } else { if (a[0]>a[1]) { max = a[0]; min = a[1]; } else { max = a[1]; min = a[0]; } for (int i = 2; i < len; i += 2) { if (a[i] < a[i + 1]) { if (a[i + 1]>max) { max = a[i + 1]; } if (a[i] < min) { min = a[i]; } } else { if (a[i]>max) { max = a[i]; } if (a[i + 1] < min) { min = a[i + 1]; } } } } cout << "max:\t" << max << endl; cout << "min:\t" << min << endl; } int main() { int a[] = {1,4,5,2,8,9,2,0,11,22,345,1,3}; int N = sizeof a / sizeof a[0]; getMaxMin(a, N); }
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步