同時找到陣列中的最小值和最大值

2022-01-30 03:43:04 字數 997 閱讀 2794

找出包含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個整數組成的陣列,需要比較多少次才能把最大和最小的數找出來呢?解法一 可以把這個問題分解為兩個問題,求最大值和最小值,...