O(1)空间子数组换位算法
来源:互联网 发布:美容院用的软件 编辑:程序博客网 时间:2024/06/10 09:40
#include "iostream"#include "algorithm"using namespace std;//向前循环换位法//将数组a[0,k-1]与a[k,n-1]换位void forward(int a[], int n, int k){ for(int i=0; i<k; i++) { int temp = a[0]; for(int j=1; j<n; j++) a[j-1] = a[j]; a[n-1] = temp; }}//向后循环换位法//将数组a[0,k-1]与a[k,n-1]换位void backward(int a[], int n, int k){ for(int i=k; i<n; i++) { int temp = a[n-1]; for(int j=n-1; j>0; j--) a[j] = a[j-1]; a[0] = temp; }}//三次反转算法void exch(int a[], int n, int k){ reverse(a, a+k); //将a[0,k-1]逆序 [4,3,2,1,5,6,7,8,9] reverse(a+k, a+n); //将a[k,n-1]逆序[4,3,2,1,9,8,7,6,5] reverse(a, a+n); //将a[0,n-1]逆序[5,6,7,8,9,1,2,3,4]}void print(int a[], int n){ for(int i=0; i<n; i++) cout << a[i] << " "; cout << endl;}void init(int a[]){ for(int i=1; i<10; i++) a[i-1] = i;}int main(){ int a[9]; int n = 9; int k = 4; init(a); forward(a, n, k); cout << "forward:\t"; print(a, n); init(a); backward(a, n, k); cout << "backward:\t"; print(a, n); init(a); exch(a, n, k); cout << "exch:\t\t"; print(a, n); return 0;}
0 0
- O(1)空间子数组换位算法
- <算法书>子数组换位问题
- 经典算法 之 子数组换位问题
- 【分治法】子数组换位问题
- 数组重排,O(1)空间
- 数组奇偶分离算法,时间复杂度O(n),空间复杂度O(1)。
- 最长公共子串-不建立dp数组(空间复杂度为O(1))
- 【算法】O(1)空间,不改变原数组的情况下找第K大的数
- 算法,不改变正负数之间相对顺序重新排列数组.时间O(N),空间O(1)
- [算法学习]不改变正负数之间相对顺序重新排列数组.时间O(N),空间O(1)
- 有序整型数组A,大小为n,请给出一个O(n)的算法,删除重复元素,O(1)空间
- [算法学习]不改变正负数之间相对顺序重新排列数组.时间O(N),空间O(1)
- O(N)时间复杂度、O(1)空间复杂度 构造数组
- 数组换位问题
- 子空间算法
- 有1,2,....一直到n的无序数组,求排序算法,要求时间复杂度为O(n),空间复杂度O(1)
- 有1,2,…,n的无序数组,求排序算法,并且要求时间复杂度为O(n),空间复杂度O(1),一次只能交换两个数
- 有1,2,....一直到n的无序数组,求排序算法,要求时间复杂度为O(n),空间复杂度O(1)
- svn版本控制工具的安装和配置
- runtime 的一些作用
- 能ping通Linux 但是ssh连不上问题解决方法
- Servlet概述
- UIWebView 加载 HTML
- O(1)空间子数组换位算法
- 第三年
- swift:无限图片轮播器
- HihoCoder #1257 (2015-2016 ACM 北京站) Snake Carpet [构造题]
- Webrtc服务器搭建
- linux grep命令详解
- iOS app 的性能关注点
- 转载安卓中的touch处理
- Day3 编写ORM