同時尋找序列的最大最小值

2022-07-21 07:15:09 字數 495 閱讀 7635

問題描述:

給定乙個長度為n(n>=2)的無序正整數序列ary,要求同時找到其中最大和最小值元素,並返回其和。

分析:

將最大值max和最小值min看成一對(mix,min),每次從序列中成對地取出兩個元素,將其中較小者與min比較並更新,將其中較大者與max必將並更新,這樣處理每一對元素只需要3次比較,整個序列可以分成大致n/2對,比較次數約為3n/2。

實現:

public

static

int getsumofmaxandmin(int

ary)

else

for (; i < lenght; i+=2)

if (ary[i+1]>max)

}else

if (ary[i]>max) }}

return max+min;

}

同時找最大最小值

題目定義 給定乙個大小為n的陣列,無序,找到其中的最大值和最小值,要求元素間的比較次數盡可能少。這道題出自 演算法導論 創新工場2016校招筆試也考了這道題。以下摘自 演算法導論 事實上,我們只需要最多3 n 2 次比較就可以同時找到最小值和最大值。具體的方法是記錄已知的最大值和最小值,然後對輸入元...

同時得到最大最小值的最優演算法

首先,我們將一對輸入元素進行比較,然後把較小的值與最小值比較,較大值與最大值比較。這樣,每兩個元素共需3次比較。如果n是奇數,就把最大最小值的初值都設為第乙個元素的值,然後成對處理剩下的元素 如果n是偶數,則先比較前兩個元素,決定最大最小值的初值,然後成對處理剩下的元素。include stdafx...

最大最小值

示例一 maximum lambda x,y x y x x y y 注意 x y 返回的是0或者1 minimum lambda x,y x y y x y x a 10 b 20 print the largar one is d maximum a,b print the lower one ...