【编程之美-扩展】找出N个数中的第二大数
来源:互联网 发布:手机截图编辑软件 编辑:程序博客网 时间:2024/06/03 11:06
采用分治法思想,分别找出每个小组的最大值和次大值,在进行比较。但是当遇到一个小组中只有一个数的情况处理起来比较复杂。
因此,对于数组长度为奇数的情况分开考虑,保留最后一位数,单独比较
#include <iostream>using namespace std;void finMax_Max2(int* arr ,int begin ,int end, int &Max ,int &Max2){if(end-begin<1){exit(1);}bool flag = false;int last;if((end - begin +1)%2 == 1){flag = true;last = arr[end];end--;}if(begin +1 == end){if(arr[begin] > arr[end]){Max = arr[begin];Max2 = arr[end];}else{Max2 = arr[begin];Max = arr[end];}}else{int leftMax,leftMax2,rightMax,rightMax2;int mid = begin +( end -begin )/2;finMax_Max2( arr ,begin ,mid, leftMax ,leftMax2);finMax_Max2( arr ,mid+1 ,end, rightMax ,rightMax2);if(leftMax>rightMax){Max = leftMax;if(leftMax2>rightMax)Max2 = leftMax2;elseMax2 = rightMax;}else{Max =rightMax;if(rightMax2>leftMax)Max2 = rightMax2;elseMax2 = leftMax;}}if(flag){if(last>Max){Max2 = Max;Max = last;}else if(last>Max2 ){Max2 = last;}}}void main(){int a[7]={1,2,1213,24};int max,max2;finMax_Max2(a,0,3,max,max2);cout<< max2;system("pause");}
0 0
- 【编程之美-扩展】找出N个数中的第二大数
- 编程之美 2.10 扩展问题:求数组中的第二大数
- 编程之美2.10扩展问题求数组中第二大数
- 编程之美2.10扩展问题求数组中第二大数
- 编程之美->N!末尾0个数
- 0710 编程之美之N!末尾0的个数
- 编程之美:1-n中1的个数
- 找出n个元素中最小的k个数(编程珠玑第二章)
- 在O(n)时间内找出n个数中的第k个(《编程珠玑》第11章)
- 编程之美 2.1 求二进制中的1的个数
- 寻找N个数组中的第二大数
- 编程之美之找出故障机器
- 系统随机输出n个数,求出第二大数的值
- 编程之美3.6 扩展
- 编程之美4.2 扩展
- 编程之美4.6扩展
- 编程之美3.1 扩展
- 编程之美----扩展问题
- lua数学库
- 继承的使用
- 琐碎资料收集整理
- 读取clob格式文件
- Jquery+Json+struts交互demo,以及为什么要配置includeProperties,root
- 【编程之美-扩展】找出N个数中的第二大数
- arm-linux-gcc 安装(非编译)
- 五绝·咏絮
- TCP/IP协议族简介
- ARM-Linux开机自启动设置-mini2440开发板
- oc5
- 设计模式 命令模式 之 管理智能家电
- 二进制法生成子集
- 深入理解JAVA虚拟机--读书笔记