Java实现右旋转数组元素

1 说明

在此程序中,我们需要将数组的元素向右旋转指定的次数。如果将数组的所有元素向右移动一个位置,则称该数组为右旋转。一种方法是通过将数组的每个元素移至其下一个位置来遍历数组。数组的最后一个元素将成为旋转数组的第一个元素。

考虑上面的数组,如果n为1,则该数组的所有元素将向右移一个位置,即该数组的第一个元素将占据第二个位置,第二个元素将移至第三个位置,很快。数组的最后一个元素将成为数组的第一个元素。

2 算法思路

  • 步骤1:开始
  • 步骤2:初始化arr [] = {1、2、3、4、5}。
  • 步骤3: SET n = 3
  • 步骤4:打印「Original Array」
  • 步骤5:重复步骤6直到i <arr.length
                // for(i = 0; i <arr.length; i ++)
  • 步骤6:列印arr [i]
  • 步骤7:将步骤8重复到步骤12直到i <n
                // for(i = 0; i <n; i ++)
  • 步骤8:定义j,最后。
  • 步骤9: last = arr [arr.length-1]
  • 步骤10:重复步骤11直到j> 0
                // for(j = arr.length-1; j> 0; j--)
  • 步骤11: arr [j] = arr [j-1]
  • 步骤12: arr [0] =最后
  • 步骤13:打印“Array after right rotation”
  • 步骤14:重复步骤15直到i <arr.length
                // for(i = 0; i <arr.length; i ++)
  • 第15步:打印arr [i]
  • 步骤16:结束

3 程序实现

/**
 * 一点教程网: http://www.yiidian.com
 */
class RotateRight {    
 public static void main(String[] args) {    
        //Initialize array     
        int [] arr = new int [] {1, 2, 3, 4, 5};     
        //n determine the number of times an array should be rotated.    
        int n = 3;    
           
        //Displays original array    
        System.out.println("Original array: ");    
        for (int i = 0; i < arr.length; i++) {     
            System.out.print(arr[i] + " ");     
        }      
            
        //Rotate the given array by n times toward right    
        for(int i = 0; i < n; i++){    
            int j, last;    
            //Stores the last element of array    
            last = arr[arr.length-1];    
            
            for(j = arr.length-1; j > 0; j--){    
                //Shift element of array by one    
                arr[j] = arr[j-1];    
            }    
            //Last element of array will be added to the start of array.    
            arr[0] = last;    
        }    
        
        System.out.println();    
            
        //Displays resulting array after rotation    
        System.out.println("Array after right rotation: ");    
        for(int i = 0; i< arr.length; i++){    
            System.out.print(arr[i] + " ");    
        }    
    }    
}

以上代码输出结果为:

Original Array:
1   2   3   4   5
Array after right rotation:
3   4   5   1   2

 

热门文章

优秀文章