编程之美-数组循环移位
2013-03-14 12:39
204 查看
#include<stdio.h> void RightShift1(int *arr,int N,int K) {//循环右移 K %= N; while(K--) { int t = arr[N - 1]; for(int i = N - 1; i > 0;--i) { arr[i] = arr[i - 1]; } arr[0] = t; } } void Reverse(int *arr,int b,int e) { for( ; b < e; b++,e--) { int temp = arr[e]; arr[e] = arr[b]; arr[b] = temp; } } void RightShift2(int *arr,int N,int K) { K %= N; Reverse(arr,0,N - K -1); Reverse(arr,N - K,N-1); Reverse(arr,0,N-1); } int gcd(int a,int b) { if( b == 0 ) return a; else return gcd(b,a%b); } void RightShift3(int *arr,int N, int K) {//循环右移 int i,j; int num = gcd(K,N); for( i = 0 ;i < num;++i) { int tmp = arr[i]; j = i; while(1) { int m = (j + N-K) % N; if(m == i) break; arr[j] = arr[m]; j = m; } arr[j] = tmp; } }
相关文章推荐
- 读书笔记之编程之美 - 2.17 数组循环移位
- 编程之美---数组循环移位
- 每天学习一点编程(14)(数组/字符串循环移位)
- [编程之美] PSet2.17 数组循环移位
- 编程之美 数组循环移位
- 编程之美6:数组循环移位
- 编程之美-2.17-数组循环移位
- 编程之美的2.17,数组循环移位 & 字符串逆转(反转) Hello world Welcome => Welcome world Hello
- 编程之美 2.17 数组循环移位
- 编程之美 2.17 数组循环移位
- 编程之美 2.17 数组循环移位
- 编程之美---数组循环移位
- 编程之美-2.17 数组移位循环
- 编程之美--数组循环移位
- 编程之美 - 数组循环移位
- 去哪儿笔试题——排序数组循环移位后查找
- 数组循环移位
- 数组循环移位
- 2.17 数组循环移位
- 数组循环移位