1. 程式人生 > >陣列:尋找陣列中的最大值與最小值

陣列:尋找陣列中的最大值與最小值

尋找陣列中的最小值與最大值有很多方法:

比如分別進行兩次遍歷,一次求最大值,一次求最小值,需要比較2N次,或者取單元素法,用兩個變數分別表示最小值和最大值,min表示最小值,max表示最大值,遍歷一次陣列,每次取出一個數組先與最小值比較,再與最大值比較等等。

這次記錄的是取雙元素法

每次比較相鄰的兩個數,較大者與max比較,較小者與min比較,這種方法比較1.5N次。

實現的時候需要注意的幾點:

1)min與max初始值均為a[0]

2)變數i用來遍歷陣列a, 注意i應該從1開始, 由於是比較相鄰的兩個數,所以i的改變為 i= i+2

3)如果i指向了最後一個元素,則這個元素分別與min和max比較

4)max與min均設定為了靜態的


程式碼實現:

private void GetMaxAndMin(int[] a) {
		max=a[0];min=a[0];
		for(int i=1; i<=a.length-1; i+=2){
			if(i+1 >= a.length){
				if(a[i] > max){
					max = a[i];
				}
				if(a[i] < min){
					min = a[i];
				}
			}//
			else if(a[i]>a[i+1]){
				if(a[i] > max){
					max = a[i];
				}
				if(a[i+1] < min){
					min = a[i+1];
				}
			}//
			else if(a[i]<a[i+1]){
				if(a[i+1] > max){
					max = a[i+1];
				}
				if(a[i] < min){
					min = a[i];
				}
			}//
			
		}
	}//

測試程式碼:

@Test
	public void test1(){
		int[] a = {7,3,19,40,4,1};
		GetMaxAndMin(a);
		System.out.println(max+"  "+min);
	}

測試結果: