陣列:尋找陣列中的最大值與最小值
阿新 • • 發佈:2018-12-30
尋找陣列中的最小值與最大值有很多方法:
比如分別進行兩次遍歷,一次求最大值,一次求最小值,需要比較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);
}