- 题目:
- 算法思想手写过程:
- C++代码实现(有待优化):
#include<bits/stdc++.h> using namespace std; //定义存放元素的数组,计算时下标从1开始 int List[10001]; void reverse(int start,int end) { //对数组进行转置 for(int i=0;i<=(end-start)/2;i++) { int f=List[start+i]; List[start+i]=List[end-i]; List[end-i]=f; } } int main(){ //共有n个数 int n; //循环左移p个位置 int p; cin>>n>>p; //输入数组元素 for(int i=1;i<=n;i++) List[i]=i; //输出原数组 printf("原数组:\n"); for(int i=1;i<=n;i++) { cout<<List[i]<<" "; } cout<<endl; reverse(1,p); reverse(p+1,n); reverse(1,n); //输出原数组 printf("左移后的数组:\n"); for(int i=1;i<=n;i++) { cout<<List[i]<<" "; } cout<<endl; return 0; }
- 时间复杂度O(n);空间复杂度O(1);