
找到一个数组中最大值一般用如下方法,首先拿出数组中第一个值作为当前的最大值,然后依次和后面所有的值比较,发现有比当前最大值还大的就更新最大值的记录:
[cpp] view plain copy
int maximum(int arr, int size)
{
int i;
int max = arr[0];
for (i = 1; i < size; i++)
{
if (max < arr[i]) max = arr[i];
}
return max;
}
同理,最小值也是这么判断:
[cpp] view plain copy
int minimum(int arr, int size)
{
int i;
int min = arr[0];
for (i = 1; i < size; i++)
{
if (min > arr[i]) min = arr[i];
}
return min;
}
无论是求最大值还是最小值都进行了n-1次比较,那么同时求最大值是否需要判断2n-2次呢?
算法导论第九章给出了一个结论,最多只需要比较3+n-2次比较就可以完成,因为我们可以从数组中一次取两个数据,先将这两个数据进行比较,然后把其中大的与最大值记录比较,小的与最小值记录比较即可,因为取出的两个数据中的小的值不可能还会成为最大值。
[cpp] view plain copy
void getRange(int arr, int size, int max, int min)
{
int p = arr, endp = arr + size;
if (size % 2 != 0)
{
max = min = p++;
}
else
{
if (p > (p + 1))
{
max = p;
min = (p + 1);
}
else
{
max = (p + 1);
min = p;
}
p += 2;
}
while (p != endp)
{
if (p > (p + 1))
{
if (p > max) max = p;
if ((p + 1) < min) min = (p + 1);
}
else
{
if ((p + 1) > max) max = (p + 1);
if ((p) < min) min = p;
}
p += 2;
}
}
#include <stdioh>
int main()
{
int i, j, n, max, num[100];
printf("输入整数个数:");
scanf("%d", &n);
printf("输入不同的整数:");
for(i = 0; i < n; i++){
scanf("%d", &num[i]);
}
j = 0;
max = num[0];
for(i = 1; i < n: i++){
if(num[i] > max){
max = num[i];
j = i;
}
}
printf("%d %d", j, max);
return 0;
}
思路:可以用遍历数组的方法来判断
方法如下:
var t = new Array(1,11,111,1111,11111);//定义个数组var m = t[0];
for(var i=1;i<tlength;i++){ //循环数组
if(m<t[i])m=t[i];}//该判断就可以判断整个数组的最大值
你好,用max()函数即可,比如
>> r = rand(1,10);
>> [maxr,index]=max(r)
maxr =
09649
index =
10
第一个返回参数是最大值,第二个参数是最大值所在的位置(下标)
以上就是关于同时获取数组中的最大值和最小值全部的内容,包括:同时获取数组中的最大值和最小值、求数组中的最大值、js怎么取出数组中的最大值等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)