android 求一组数据波峰波谷值
要求一组数据的波峰和波谷值,可以使用以下算法:
- 遍历数据数组,从第二个元素开始到倒数第二个元素结束。
- 判断当前元素是否为波峰或者波谷。波峰是指当前元素大于其前后两个元素,波谷是指当前元素小于其前后两个元素。
- 如果是波峰,则将当前元素添加到波峰值数组中。
- 如果是波谷,则将当前元素添加到波谷值数组中。
- 最后返回波峰值数组和波谷值数组。
以下是一个用Java实现的示例代码:
public class PeakAndValley {
public static void main(String[] args) {
int[] data = {1, 2, 3, 2, 1, 4, 5, 3, 2};
int[] peaks = findPeaks(data);
int[] valleys = findValleys(data);
System.out.println("Peaks: ");
for (int peak : peaks) {
System.out.print(peak + " ");
}
System.out.println();
System.out.println("Valleys: ");
for (int valley : valleys) {
System.out.print(valley + " ");
}
System.out.println();
}
public static int[] findPeaks(int[] data) {
List<Integer> peaksList = new ArrayList<>();
for (int i = 1; i < data.length - 1; i++) {
if (data[i] > data[i-1] && data[i] > data[i+1]) {
peaksList.add(data[i]);
}
}
int[] peaks = new int[peaksList.size()];
for (int i = 0; i < peaksList.size(); i++) {
peaks[i] = peaksList.get(i);
}
return peaks;
}
public static int[] findValleys(int[] data) {
List<Integer> valleysList = new ArrayList<>();
for (int i = 1; i < data.length - 1; i++) {
if (data[i] < data[i-1] && data[i] < data[i+1]) {
valleysList.add(data[i]);
}
}
int[] valleys = new int[valleysList.size()];
for (int i = 0; i < valleysList.size(); i++) {
valleys[i] = valleysList.get(i);
}
return valleys;
}
}
对于示例数据 {1, 2, 3, 2, 1, 4, 5, 3, 2},输出结果为:
Peaks:
3 5
Valleys:
1 2 1 2
其中,波峰值为3和5,波谷值为1、2、1和2
原文地址: https://www.cveoy.top/t/topic/iuls 著作权归作者所有。请勿转载和采集!