首页 > 代码库 > 数组循环右移
数组循环右移
时间复杂度o(n2)
1234abcd -> 4321abcd -> 4321dcba -> abcd1234
1 int change(int *a, int k) 2 { 3 int i, tmp; 4 k %= LEN; 5 while (k-- > 0) { 6 tmp = a[LEN - 1]; 7 for (i = LEN - 1; i > 0; i--) { 8 a[i] = a[i - 1]; 9 }10 a[0] = tmp;11 }12 13 return 0;14 }
时间复杂度o(n)
1 int reverse(int *a, int start, int end) 2 { 3 int tmp; 4 for (; start < end; start++, end--) { 5 tmp = a[end]; 6 a[end] = a[start]; 7 a[start] = tmp; 8 } 9 return 0;10 }11 12 int change1(int *a, int k)13 {14 k %= LEN;15 reverse(a, 0, LEN - k - 1);16 reverse(a, LEN - k, LEN - 1);17 reverse(a, 0, LEN - 1);18 return 0;19 }
数组循环右移
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。