找出包含n個元素的陣列中的最小值和最大值。最簡單的方法就是獨立的使用n-1次迴圈,然後分別得到最小值和最大值,如是這樣的,共用了2n-2次比較。
但是我們可以使用比較次數更低的方法來找出最小值和最大值。方法如下:
先將一對元素互相進行比較,然後把最小值跟當前最小值進行比較,把最大值跟當前最大值進行比較。,因此每兩個元素需要3次比較。
如果n 為奇數,那麼比較的次數是
次比較。如果
n 為偶數,那麼比較的次數是
3n/2-2
次比較。因此,不管是
n是奇數還是偶數,比較的次數至多是
. 具體的c# **如下:
public
void lookminmaxelement(int32 a,ref
int32 min,ref
int32 max)
if (a[i + 1] > max)
}else
if (a[i] > max)
}} }
} 測試**如下:
[testmethod()]
public
void lookminmaxelementtest()
; int32 min = int32.maxvalue;
int32 max = int32.minvalue;
target.lookminmaxelement(a, ref min, ref max);
assert.areequal(2, min);
assert.areequal(21, max);
a = new
int32[3] ;
min = int32.maxvalue;
max = int32.minvalue;
target.lookminmaxelement(a, ref min, ref max);
assert.areequal(1, min);
assert.areequal(1, max);
}
尋找陣列中的最大值和最小值
問題描述 給出乙個陣列,包含n個整數,那麼需要比較多少次找到最大值和最小值 注意 要想得到最大值和最小值,遍歷一遍陣列是不可避免的。我們能減少的就是減少比較次數來提高效率 方法一 遍歷一遍陣列,同時得到最大值和最小值 具體是,定義乙個max 和 min,每遍歷乙個數,就分別和max 和 min比較一...
尋找陣列中的最大值和最小值
如何尋找陣列中的最大值和最小值 維持兩個變數min,max,每次比較相鄰的兩個數,較大者與max比較,較小者與min比較,通過比較找出最值。比較次數為1.5n次。public class maxmin public static void main string args int arr1 null...
尋找陣列中的最大值和最小值
陣列是最簡單的一種資料結構。我們經常碰到乙個基本的問題,就是尋找整個陣列中的最大數或最小數。我們只需 遍歷一遍陣列,就能找到最大 最小 數。如果同時尋找最大數和最小數呢?對於乙個由n個整數組成的陣列,需要比較多少次才能把最大和最小的數找出來呢?解法一 可以把這個問題分解為兩個問題,求最大值和最小值,...