Java如何将数组拆分为两个不同的数组,然后向数组中添加一个数字

Java如何将数组拆分为两个不同的数组,然后向数组中添加一个数字,java,arrays,Java,Arrays,我有一个大小未知的数组,我只知道我只有奇数大小的数字 我需要能够检查数组的前半部分是否逐渐向中心值(最大值)增长,而在中心值之后,数字的值逐渐变低 我认为最好的方法是分割数组的长度,但因为它是一个奇数,我需要在数组中添加0.5,这似乎是不可能的 int N = Integer.parseInt(args[0]); int[] array = new int[N]; int x = array.length; //split into new arrays int[] a = new int

我有一个大小未知的数组,我只知道我只有奇数大小的数字

我需要能够检查数组的前半部分是否逐渐向中心值(最大值)增长,而在中心值之后,数字的值逐渐变低

我认为最好的方法是分割数组的长度,但因为它是一个奇数,我需要在数组中添加0.5,这似乎是不可能的

int N = Integer.parseInt(args[0]);

int[] array = new int[N];

int x = array.length;

//split into new arrays
int[] a = new int [x/2];
int[] b = new int [x/2];

if(a<b && b<c){
    System.out.println("Has a peak");
} else {
    System.out.println("Doesnt have a peak"); 
}
int N=Integer.parseInt(args[0]);
int[]数组=新的int[N];
int x=数组长度;
//拆分为新阵列
int[]a=新的int[x/2];
int[]b=新的int[x/2];

如果(a中心值不需要在其中一个子数组中。如果原始值为N=11,则可以将其拆分为5-1-5。但正如Bob Brinks的评论所说,实际上不需要创建单独的数组,只需要使用int作为适当的索引,并循环遍历数组本身,检查每个单元格是否遵循r在循环之前,将名为“ok”的bool设置为true,如果任何数组索引未通过测试,则将其设置为false

中心单元格将始终位于数组[N/2](N/2始终向下舍入)。您可以检查从数组[1]到数组[N/2]的每个单元格,并确保每个单元格都比之前的单元格大。然后,您将有第二个循环,它将查看从数组[N/2+1]到数组[N-1]的每个单元格然后在循环之后,你看“ok”是否仍然为真,在这种情况下,没有一个单元格违反了规则


要注意的主要问题是每次通过循环打印单元格索引,并确保它们都以正确的顺序(起点和终点)触发,如果不是,那么您在如何编写FOR循环时遇到了问题,另一个问题是是否允许一行中有两个相等的值。使用>=和尝试此函数。它将数组作为参数,如果数组包含峰值(根据您的解释),则返回
true
,如果没有峰值,则返回
false

public static boolean isPeak(int[] array){
    int length = array.length;
    int prev=array[0];
    for(int index=1;index<length;index++){
        if(index<length/2+1){
            if(array[index] < prev){
                return false;
            } else {prev=array[index];}
        } else {
            if(array[index] > prev){
                return false;
            } else {prev=array[index];}
        }
    }
    return true;
}
public静态布尔isPeak(int[]数组){
int length=array.length;
int prev=数组[0];

对于(int index=1;indexIt)来说,只需在数组中循环并跟踪值第一次下降的时间可能会更容易。然后确保它在这之后一直下降,否则它不会有一个偷窥。