使用递归函数反转数组的后半部分

Using recursive function to reverse the second half of an array

我是Java的初学者。我知道如何打印反向数组,但我不知道如何打印一半。例如:

原始数组 A = {1,2,3,4,5,6,7,8,9,0}

函数后:

转换数组 A' = {1,2,3,4,5,0,9,8,7,6}

请尝试以下步骤,

  1. 求数组的长度 - N
  2. 创建另一个大小为 - N 的数组
  3. 找到一半 - n
  4. 复制前n个元素
  5. 中断,从最后一个元素开始(索引到最后一个元素)并复制元素直到第 n 个位置(注意索引指针应递减)
private void reverse(int[] ar, int i, int j) {
   if(i>j)
     return;
   else{
     int temp = ar[i];
     ar[i] = ar[j];
     ar[j] = temp;
     reverse(ar, ++i, --j);
   }
}

从主方法调用 reverse(ar, (ar.length/2), ar.length-1)

请大家找到完美的解决方案!!!

导入阵列和扫描仪包

public static void main(String[] args) {

    Scanner size = new Scanner(System.in);
    System.out.println("Enter Array Size : ");
    int arraySize = size.nextInt();
    
    Scanner data = new Scanner(System.in);
    System.out.println("Enter Array Data : ");
    int arrayData[] = new int[arraySize];
    
    for(int inputLoop = 0; inputLoop < arraySize; inputLoop++) {
        
        arrayData[inputLoop] = data.nextInt();
        
    }
    
    System.out.println("Original Array : " + Arrays.toString(arrayData));
    
    int centerPoint = arrayData.length / 2;
    int endPoint = arrayData.length - 1;
    
    reverse(arrayData, centerPoint, endPoint);
    
    System.out.println("Transformed Array : " + Arrays.toString(arrayData));
    
    data.close();
    size.close();

}

private static void reverse(int[] arrayData, int centerPoint, int endPoint) {

    if(centerPoint > endPoint || centerPoint == endPoint) {
        
        return;
        
    }
    else {
        
        arrayData[centerPoint] = arrayData[centerPoint] - arrayData[endPoint];
        arrayData[endPoint] = arrayData[centerPoint] + arrayData[endPoint];
        arrayData[centerPoint] = arrayData[endPoint] - arrayData[centerPoint];
        
        reverse(arrayData, ++centerPoint, --endPoint);
        
    }
    
}

}