关闭

数组循环移位

73人阅读 评论(0) 收藏 举报
分类:

思路就不说了,好的代码一下就能看出思路

代码:

public class LoopMove {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		int arr[] = new int[] { 1, 2, 3, 4, 5, 6, 7, 8 };
		int n = 8, k = 4;
		RightShift(arr, n, k);
		for (int i = 0; i < arr.length; i++) {
			System.out.printf("%d ", arr[i]);
		}
	}

	private static void RightShift(int[] arr, int n, int k) {
		// TODO Auto-generated method stub
		k %= n;
		Reverse(arr, 0, n - k - 1);        
		Reverse(arr, n - k, n - 1);
		Reverse(arr, 0, n - 1);
	}

	private static void Reverse(int[] arr, int i, int j) {
		// TODO Auto-generated method stub
		for (; i < j; i++, j--) {
			int temp = arr[i];
			arr[i] = arr[j];
			arr[j] = temp;
		}
	}

}

测试结果:



0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:31664次
    • 积分:1455
    • 等级:
    • 排名:千里之外
    • 原创:117篇
    • 转载:11篇
    • 译文:0篇
    • 评论:4条
    最新评论