序列的左旋右旋
来源:互联网 发布:淘宝违规记录怎么清除 编辑:程序博客网 时间:2024/04/30 15:14
一、左旋
/* Function to left rotate arr[] of size n by d */void leftRotate(int arr[], int d, int n){ rvereseArray(arr, 0, d-1); rvereseArray(arr, d, n-1); rvereseArray(arr, 0, n-1);}
/*Function to reverse arr[] from index start to end*/void rvereseArray(int arr[], int start, int end){ int i; int temp; while(start < end) { temp = arr[start]; arr[start] = arr[end]; arr[end] = temp; start++; end--; }}
二、右旋
/* Function to right rotate arr[] of size n by d */void rightRotate(int arr[], int d, int n){ rvereseArray(arr, 0, n-d-1); rvereseArray(arr, n-d, n-1); rvereseArray(arr, 0, n-1);}或者
/* Function to right rotate arr[] of size n by d */void rightRotate(int arr[], int d, int n){ d = n-d; rvereseArray(arr, 0, d-1); rvereseArray(arr, d, n-1); rvereseArray(arr, 0, n-1);}
对于字符串,左旋如下:
char * invert(char *start, char *end) { char tmp, *ptmp = start; while (start != NULL && end != NULL && start < end) { tmp = *start; *start = *end; *end = tmp; start ++; end --; } return ptmp; } char *left(char *s, int pos) //pos为要旋转的字符个数,或长度,下面主函数测试中,pos=3。 { int len = strlen(s); invert(s, s + (pos - 1)); //如上,X->X^T,即 abc->cba invert(s + pos, s + (len - 1)); //如上,Y->Y^T,即 def->fed invert(s, s + (len - 1)); //如上,整个翻转,(X^TY^T)^T=YX,即 cbafed->defabc。 return s; }
0 0
- 序列的左旋右旋
- 字符串的左旋右旋
- 二叉树的左旋和右旋
- AVL树的左旋右旋理解
- 树的左旋与右旋
- 红黑树的插入创建(左旋 右旋)
- 二叉树的左旋和右旋
- 树的左旋与右旋
- 字符串的左旋和右旋
- 树的左旋和右旋
- 左旋右旋字符串
- 左旋(右旋)字符串
- 红黑树的理解与学习&左旋与右旋操作
- 实现字符串左旋和右旋的常见方法
- c语言----高位舍弃的左旋和右旋操作
- 易的核心理念之天道左旋、地道右旋
- nyoj202 红黑树 (二叉树的左旋右旋)
- winform中实现图片左旋,右旋
- Android开发和调试
- eclipse常见小问题
- Oracle如何操作数据的加密
- WP8将采用Win8内核 Windows CE将成历史
- linux普通用户执行管理员权限visudo
- 序列的左旋右旋
- cocos2dx 3.0之 如何在Table中如何获取事件
- jquery之动画之div层移动animate:
- 一些好的博客收集
- 在Android中自定义捕获Application全局异常,可以替换掉系统的强制退出对话框(很有参考价值与实用价值)
- logistic regression 逻辑斯蒂回归(两类)
- Spring中配置sessionFactory的2种方式
- iOS应用性能调优的25个建议和技巧
- 编程书籍大全