C++第二次测验——第二大值
来源:互联网 发布:sql数据库没有服务器 编辑:程序博客网 时间:2024/04/26 05:52
课程首页地址:http://blog.csdn.net/sxhelijian/article/details/7910565
【题目】编写一个函数int find_sec_max( int data[] , int n);找出一个整数数组data中的第二大的数。
解法一:一次“扫描”找出次大值
//编写一个函数,找出一个整型数组data中的第二大的数。#include <iostream>using namespace std;int find_sec_max(int data[] , int n);int main (){ int a[10]= {99,6,12,2,4,98,14,11,76,1}; cout<<"a数组中的第二大数为:"<<find_sec_max(a,10)<<endl; return 0;}int find_sec_max(int data[] , int n){ int max1; //最大 int max2; //次大 if (data[0]>data[1]) max1=data[0], max2=data[1]; else max1=data[1], max2=data[0]; for(int i=1; i<n; i++) { if(data[i] > max1) //比最大的都大 { max2 = max1; max1 = data[i]; } else if(data[i] > max2 && data[i] < max1) //a[i]应该是新老二,老大不变 max2 = data[i]; } return max2;}
解法2:用类似选择排序的方法,但需要两次“扫描”
//编写一个函数,找出一个整型数组data中的第二大的数。#include <iostream>using namespace std;int find_sec_max(int data[] , int n);int main (){int a[10]={3,6,12,2,4,98,14,11,76,1};cout<<"a数组中的第二大数为:"<<find_sec_max(a,10)<<endl;return 0; }int find_sec_max(int data[] , int n){int k=0,i,t; for(i=1; i<n; i++) { if(data[i] > data[k]){ k=i; //用k记录最大值的下标} }t=data[0];data[0]=data[k];data[k]=t; //通过交换,data[0]中将是最大值//次大元将是data[1]到data[n-1]中的最大元素k=1;for(i=2; i<n; i++) { if(data[i] > data[k]){ k=i; //用k记录最大值的下标} }return data[k];}
解法2的又一写法:更像选择排序了
//编写一个函数,找出一个整型数组data中的第二大的数。#include <iostream>using namespace std;int find_sec_max(int data[] , int n);int main (){int a[10]={3,6,12,2,4,98,14,11,76,1};cout<<"a数组中的第二大数为:"<<find_sec_max(a,10)<<endl;return 0; }int find_sec_max(int data[] , int n){int k=0,i,j,t;for(j=0;j<2;++j) //就循环两次,如果照着排序做,出力不讨好了{k=j;for(i=j+1; i<n; i++) { if(data[i] > data[k]){ k=i; //用k记录最大值的下标} }if(j!=k){t=data[j];data[j]=data[k];data[k]=t; //通过交换,data[j]中将是最大值}}return data[1]; //次大元放在data[1]中}
- C++第二次测验——第二大值
- C++第二次测验——二维数组各行各列之和
- 第二次测验参考
- 数据库第二次测验题目
- 2016C语言期中测验——德勒函数
- c++——第二次作业1
- c++——第二次作业2
- 01.猎人X测验X考官(大天使的赞美歌—妮温娜篇)
- 单片机原理与接口技术第二次测验
- ACM 第二次测验 关于 数据结构 和 STL
- c语言测验
- C语言基础测验
- C-第二次
- 小测验:停车问题——题解
- 小测验:震惊——题解
- 小测验:解密文件——题解
- 第二周——第二次课(环境变量、cp命令、mv命令、文档查看)
- 第二周第二次课
- 软件开发者最重要的四大技能
- zoj 1001纪念我的第一个java ACM题
- 数据库总结
- 【OpenCV入门指南】第十二篇 在Windows平台下分享OpenCV程序
- WinEdit6.0, 编辑环境设定
- C++第二次测验——第二大值
- 性能监控/优化系列——CPU相关
- 面试浅谈
- 谁在蚕食你的手机话费-初析WM智能手机木马与利益链
- Primer plus C++ 第十一章 使用类 _操作符重载
- 性能调优攻略
- puts和getch的用法
- 在用户态下使用uint64_t
- Linux下环境变量的种类及相关的常用命令