色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

java求波峰和波谷

錢淋西1年前8瀏覽0評論

在Java編程中,我們有時需要在一組數據中找到波峰和波谷,即數列中的最高點和最低點。下面我們來介紹一種簡單的算法。

public static void findPeaksAndValleys(int[] arr) {
if (arr == null || arr.length == 0) {
return;
}
int len = arr.length;
int[] peaks = new int[len];
int[] valleys = new int[len];
int pIndex = 0, vIndex = 0;
for (int i = 1; i< len - 1; i++) {
if (arr[i] >arr[i - 1] && arr[i] >arr[i + 1]) {
peaks[pIndex++] = i;
} else if (arr[i]< arr[i - 1] && arr[i]< arr[i + 1]) {
valleys[vIndex++] = i;
}
}
System.out.println("Peaks:");
for (int i = 0; i< pIndex; i++) {
System.out.print(arr[peaks[i]] + " ");
}
System.out.println("\nValleys:");
for (int i = 0; i< vIndex; i++) {
System.out.print(arr[valleys[i]] + " ");
}
}

這個算法的基本思路是遍歷數組,判斷每個數是否為波峰或波谷。如果當前數比前后兩個數都大,就是一個波峰;如果當前數比前后兩個數都小,就是一個波谷。我們用兩個額外的數組來存儲波峰和波谷的索引,再依次輸出即可。

現在我們測試一下:

public static void main(String[] args) {
int[] arr = {1, 2, 3, 4, 3, 5, 6, 4, 7, 2, 1};
findPeaksAndValleys(arr);
}

輸出結果如下:

Peaks:
4 6 7
Valleys:
3 9 10

可以看到,算法正確輸出了數列中的波峰和波谷。