求一个数组当中最大(最小)值的两种计算方法
2016-09-26 10:53
513 查看
求一个数组当中最大(最小)值的两种计算方法
1、常用方法(以求最大值为例)
#include "stdafx.h" #include <string> using namespace std; int _tmain(int argc, _TCHAR* argv[]) { int a[5] = { 1, 23, 2, 6, 7 }; int array_length = sizeof(a) / sizeof(a[0]);//数组大小 int max=a[0]; for (int i = 1; i < array_length; i++) { if (a[i]>max) { max = a[i]; } } printf("数组a的最大值为%d", max); getchar(); return 0; }
2、同时寻找最大值和最小值
一种思路是将上述常见的寻找最大值和最小值算法分别运行一遍就可以分别将最大值和最小值找出来,这样的话在输入情况最差的情况下面,算法运行的时间复杂度为O(2n)。另外的一种思路是同时对数组当中连续的两个数字进行比较,取其中较大的和临时最大值作比较、取其中最小的和临时最小值作比较,直到数组最后遍历完成,就可以获得最大值最小值了。这种算法在最坏的情况下的时间复杂度为O(3[n/2])([n/2]代表向下取整),算法实现如下:#include "stdafx.h" #include <string> using namespace std; int _tmain(int argc, _TCHAR* argv[]) { int a[9] = { 3, 2, 6, 1, 7, 10, 13, 9 ,20}; int array_length = sizeof(a) / sizeof(a[0]);//数组大小 int max=-10000;//临时最大值 int min=10000;//临时最小值 for (int i = 0; i < array_length && i+1<array_length; i=i+2) { if (a[i] < a[i + 1]) { if (a[i] < min) { min = a[i]; } if (a[i + 1]>max) { max = a[i + 1]; } }else{ if (a[i+1] < min) { min = a[i+1]; } if (a[i]>max) { max = a[i]; } } } //如果数组的大小为基数就要对数组当中的最后一个值单独拿出来做一次判断 if (array_length % 2 != 0) { if (a[array_length - 1] < min) { min = a[array_length - 1]; } if (a[array_length - 1] > max) { max = a[array_length - 1]; } } printf("数组a的最大值为%d,最小值为%d", max, min); getchar(); return 0; }
3、寻找一个数组当中第i小的数字
思路其实很简单,将数组做一次非递减排序,然后找到排好序当中的第i个数即可。排序算法的相关内容可以查看笔者的这一篇博客。相关文章推荐
- javascript求数组最大值和最小值(两种方法)
- 请写一个简单的求数组元素最大值和最小值的方法
- 计算数组中最大值、最小值和平均值的方法(The methods of calculating the maximum, minimum and average of a array )
- 设计一个最优算法来查找一n个元素数组中的最大值和最小值。已知一种需要比较2n次的方法,请给一个更优的算法。
- js写一个方法,求一个数组中的最大奇数和最小偶数,并求他们的和,如果一个数不存在则返回null。
- java快速寻找一个数组的最大值或最小值, min, max,三种方法
- 电子科技大学推免复试题:利用递归方法找出一个数组中的最大值和最小值
- c实现 求一个数组中最大子序列的和 (两种方法)
- 求 一个数组种最大值 与最小值的方法
- C#--第2周实验--任务8--编写一个控制台应用--输入10个数存入数组,求最大值、最小值和平均值
- JS对数组取最大值与最小值的方法
- 计算一个数组中最大子序列的和
- 编写一个函数 返回数组中最大值与最小值的差值
- 一个数组中同时找到最大/最小值
- Java程序:求一个数组中的最大值丶最小值和平均值。
- java 计算数组中的最大,次大,最小,次小的数
- 不排序,两种方法找到无序数组的最大K个数
- 大学时候想的一个算法——计算数组中最大和序列
- 用最简便的方法获取数组中的最大(最小)值。
- 定义一个int型的一维数组,包含10个元素,分别赋一些随机整数,然后求出所有元素的最大值,最小值,平均值,和值,并输出出来。