import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
import java.util.Stack;
public class peak {
public static void main(String[] args) {
/*
* 数据存入数组*/
Scanner sc=new Scanner(System.in);
String temp1=sc.nextLine();
String[] s=temp1.split(" ");
int[] arr=new int[s.length];
for(int i=0;i<s.length;i++){
arr[i]=Integer.parseInt(s[i]);
}
int index=1;
Stack<Integer> stack = new Stack();
while(findPeakElement(arr,index)<arr.length) {
stack.push(findPeakElement(arr,index));
index=stack.peek();
System.out.println(index);
if(index==s.length-1) break;
index++;
}
System.out.println("============================================================");
int son_length=0;
while (!stack.empty()) {
stack.pop();
son_length++;
}
int[] arr1=new int[(son_length/2)+1];
int[] arr2=new int[(son_length/2)+1];
/* *//*遍历输出数组*//*
for(int i=0;i<arr.length;i++){
System.out.print(arr[i]+" ");
}*/
}
public static int findPeakElement(int[] nums,int index) {
//如果数组长度是1或者第一个元素就是峰值
/* if(nums.length==1||nums[0]>nums[1]){
//返回第一个元素的下标
return 0;
}*/
int repeat=1;
//对索引在1和数组长度-2范围内的元素进行判断
//如果是峰值就返回索引
for (int i = index; i < nums.length-1; i++) {
/*
* 如果存在相等的数*/
if(nums[i]==nums[i-1]){
repeat++;
if(nums[i]>nums[i-repeat]&&nums[i]>nums[i+1]) {
System.out.print("极大值");
repeat=0;
return i;
}
else if(nums[i]<nums[i-repeat]&&nums[i]<nums[i+1]){
System.out.print("极小值");
repeat=0;
return i;
}
}else repeat=1;
/*
* 不存在相等的数字·*/
if(nums[i]>nums[i-1]&&nums[i]>nums[i+1]){
System.out.print("极大值");
return i;
}
//极小值
else if(nums[i]<nums[i-1]&&nums[i]<nums[i+1]){
System.out.print("极小值");
return i;
}
}
//程序运行到这里说明前面都没峰值
//如果数组最后一个元素是峰值,就返回索引
if(nums[nums.length-1]>nums[nums.length-2]){
return nums.length-1;
}
//没有峰值
return -1;
}
}
文章评论