同时获取数组中的最大值和最小值

同时获取数组中的最大值和最小值,第1张

同时获取数组中最大值最小值

找到一个数组中最大值一般用如下方法,首先拿出数组中第一个值作为当前的最大值,然后依次和后面所有的值比较,发现有比当前最大值还大的就更新最大值的记录:

[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怎么取出数组中的最大值等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/9617844.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-30
下一篇2023-04-30

发表评论

登录后才能评论

评论列表(0条)

    保存