Java 用另一个数组中的元素替换几乎排序数组中的元素

Java 用另一个数组中的元素替换几乎排序数组中的元素,java,arrays,algorithm,sorting,Java,Arrays,Algorithm,Sorting,我的第一个数组几乎已排序。我需要用第二个数组中的最大可能元素替换未排序的元素。错误放置的元素不会位于第0个或n-1个索引上。如果array1[i]小于array1[i-1],那么索引i是错误的索引 例如: 第一输入5 第一阵列:278613 第二输入4 第二阵列15 11 9 5 我的成绩是11分 但是,如果没有可能的元素可以从第二个数组中提取,则无法打印。例如:14 15 16 17或如果它有0个元素 如何修复此代码 int n1 = s.nextInt(); int[] arra

我的第一个数组几乎已排序。我需要用第二个数组中的最大可能元素替换未排序的元素。错误放置的元素不会位于第0个或n-1个索引上。如果array1[i]小于array1[i-1],那么索引i是错误的索引

例如: 第一输入5 第一阵列:278613 第二输入4 第二阵列15 11 9 5 我的成绩是11分

但是,如果没有可能的元素可以从第二个数组中提取,则无法打印。例如:14 15 16 17或如果它有0个元素

如何修复此代码

   int n1 = s.nextInt();
   int[] array1 = new int[n1];
   for (int i = 0; i < n1; i++) {
       array1[i] = s.nextInt();
   }
   
   int n2 = s.nextInt();
   int[] array2 = new int[n2];
   for (int i = 0; i < n2; i++) {
       array2[i] = s.nextInt();
   }
  
   
    int temp1=0;
    int temp2=0;
 
    
    for(int i=0; i < array1.length-1;i++) {
       if (array1[i] > array1[i+1]) {
           temp1=array1[i+1];
           temp2=array1[i+2];
           break;
       }
       
   }
   
int temp3 = 0;
   for(int j=0; j<=array2.length-1;j++) {
       if(array2[j] > temp1 && array2[j] < temp2){
           temp3 = array2[j];
           break;
       }
   }
   System.out.println(temp3);

   }

}
int n1=s.nextInt();
int[]数组1=新int[n1];
对于(int i=0;i数组1[i+1]){
temp1=array1[i+1];
temp2=array1[i+2];
打破
}
}
int temp3=0;
对于(int j=0;j temp1和&array2[j]
在代码中执行如下所示的一些更改,它对上述问题中提到的测试用例有效

1。假设索引i+1处的值违反排序顺序,则应取temp1=i和temp2=i+2

2。在数组2中查找介于temp1和temp2之间的最大值

// "static void main" must be defined in a public class.
public class Main {
    public static void main(String[] args) {
      
   Scanner s = new Scanner(System.in);      
        
   int n1 = s.nextInt();
   s.nextLine();
   int[] array1 = new int[n1];
   for (int i = 0; i < n1; i++) 
       array1[i] = s.nextInt();
   s.nextLine();
   
   int n2 = s.nextInt();
   s.nextLine();
   int[] array2 = new int[n2];
   for (int i = 0; i < n2; i++) 
       array2[i] = s.nextInt();
   s.nextLine();
  
   
    int temp1=0;
    int temp2=0;
 
    
    for(int i=0; i < array1.length-1;i++) 
       if (array1[i] > array1[i+1]){ 
           temp1=array1[i];
           temp2=array1[i+2];
       }   

   
   int temp3 = -1;
   for(int j=0; j<array2.length-1;j++) 
       if(array2[j] > temp1 && array2[j] < temp2)
           if(array2[j]>temp3)
               temp3 = array2[j];

    if(temp3 == -1)
        System.out.println("Not Possible\n");
    else
        System.out.println(temp3);

    }
}
/“static void main”必须在公共类中定义。
公共班机{
公共静态void main(字符串[]args){
扫描仪s=新的扫描仪(System.in);
int n1=s.nextInt();
s、 nextLine();
int[]数组1=新int[n1];
对于(int i=0;iarray1[i+1]){
temp1=阵列1[i];
temp2=array1[i+2];
}   
int temp3=-1;
对于(int j=0;j temp1和&array2[j]temp3)
temp3=array2[j];
如果(temp3==-1)
System.out.println(“不可能\n”);
其他的
系统输出打印项次(temp3);
}
}

在代码中执行如下所示的一些更改,它对上述问题中提到的测试用例有效

1。假设索引i+1处的值违反排序顺序,则应取temp1=i和temp2=i+2

2。在数组2中查找介于temp1和temp2之间的最大值

// "static void main" must be defined in a public class.
public class Main {
    public static void main(String[] args) {
      
   Scanner s = new Scanner(System.in);      
        
   int n1 = s.nextInt();
   s.nextLine();
   int[] array1 = new int[n1];
   for (int i = 0; i < n1; i++) 
       array1[i] = s.nextInt();
   s.nextLine();
   
   int n2 = s.nextInt();
   s.nextLine();
   int[] array2 = new int[n2];
   for (int i = 0; i < n2; i++) 
       array2[i] = s.nextInt();
   s.nextLine();
  
   
    int temp1=0;
    int temp2=0;
 
    
    for(int i=0; i < array1.length-1;i++) 
       if (array1[i] > array1[i+1]){ 
           temp1=array1[i];
           temp2=array1[i+2];
       }   

   
   int temp3 = -1;
   for(int j=0; j<array2.length-1;j++) 
       if(array2[j] > temp1 && array2[j] < temp2)
           if(array2[j]>temp3)
               temp3 = array2[j];

    if(temp3 == -1)
        System.out.println("Not Possible\n");
    else
        System.out.println(temp3);

    }
}
/“static void main”必须在公共类中定义。
公共班机{
公共静态void main(字符串[]args){
扫描仪s=新的扫描仪(System.in);
int n1=s.nextInt();
s、 nextLine();
int[]数组1=新int[n1];
对于(int i=0;iarray1[i+1]){
temp1=阵列1[i];
temp2=array1[i+2];
}   
int temp3=-1;
对于(int j=0;j temp1和&array2[j]temp3)
temp3=array2[j];
如果(temp3==-1)
System.out.println(“不可能\n”);
其他的
系统输出打印项次(temp3);
}
}