java 一个数组循环右移K位

xiaoxiao2021-02-27  330

如何把一个数组循环右移K位    如:12345678 右移2位  78123456       思路如下:          1:首先逆序123456,那么数组变为65432178          2:再逆序78,那么数组变为65432187          3:最后逆序整个数组:65432187 ,那么数组变为78123456      那么如何逆序呢?          定义两个变量,begin和end,分别指向需要逆序的数组的起始位置,          通过临时变量temp,进行交换,直到begin>=end 结束  

 

package datastruct.usearray; import java.util.Scanner; public class Shift_k { private static void shift_method(int array[],int k) { int n=array.length-1; k=k%n; //为了防止k>n ,右移K位和右移k%n的结果是一样的 shift_method(array, 0, n-k); shift_method(array, n-k+1, n); shift_method(array, 0, n); System.out.println("右移"+k+"位的结果为:"); for (int i : array) { System.out.print(i+" "); } } private static void shift_method(int array[],int begin,int end) { int temp; while (begin =end 结束 temp=array[begin]; array[begin]=array[end]; array[end]=temp; begin++; end--; } } public static void main(String[] args) { Scanner sc=new Scanner(System.in); System.out.println("输入数组元素个数:"); int n=sc.nextInt(); int array[]=new int[n]; System.out.println("输入"+n+"个数组元素:"); for (int i = 0; i < n; i++) { array[i]=sc.nextInt(); } System.out.println("输入移动的位数:"); int k=sc.nextInt(); shift_method(array, k); } }

运行结果如下:

              

转载请注明原文地址: https://www.6miu.com/read-2092.html

最新回复(0)