数组循环左移的一种方法
2015-08-30 13:44
387 查看
/** * 数组循环左移的一种方法 * 时间复杂度O(n),空间复杂度O(1) */ #include <stdio.h> #include <stdlib.h> typedef int element; element a[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}; int gcd(int a, int b) { if (b == 0) return a; else return gcd(b, a % b); } void leftShift(element * a, int n, int p) { int i, j, k, m, d, g, M; element tmp; g = gcd(p, n); M = n / g; for (i = 0; i < g; i++) { tmp = a[i]; j = i; for (m = 1; m < M; m++) { k = (j + p) % n; a[j] = a[k]; j = k; } a[j] = tmp; } } void printArr() { int i; for (i = 0; i < 10; i++) printf("%d ", a[i]); putchar('\n'); } int main() { leftShift(a, 10, 4); printArr(); return 0; }
相关文章推荐
- cocopads命令行
- Installation of NVIDIA GPU Driver and CUDA Toolkit
- 编译安装arm平台qt库qt-everywhere-opensource-src-4.8.5
- 读取流和写入流的学习(8.28)
- Android自学笔记之Button按钮里的属性及用法
- HDU-4750 Count The Pairs
- 安装infer整个过程
- WampServer中Mysql无法启动
- VMware为虚拟机挂载U盘
- CSS3弹性伸缩布局(二)——flex布局
- python Lambda 表达式
- Css3 提示框
- iOS 网易新闻用到的框架
- 浅谈Oracle数据库中的缓存-Cache (IO)
- [c3p0] 第二篇:使用c3p0
- (模板)最小树形图
- Android自学笔记之 EditView和TextView的一些属特殊性
- 分析器错误消息: 无法识别的属性“targetFramework”。请注意属性名称区分大小写。
- javaBean的学习(8.27)
- MySql安装杂记