1 / 3
文档名称:

数组的循环移位.doc

格式:doc   页数:3页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

数组的循环移位.doc

上传人:zbfc1172 2015/10/24 文件大小:0 KB

下载得到文件列表

数组的循环移位.doc

文档介绍

文档介绍:成绩
实验一
实验题目:数组的循环移位****
一、实验目的
(1)回顾C++的基本知识
(2)理解并分析不同算法的时间和复杂度
二、实验内容
对于一个给定的字符型数组循环左移i位,要求尽量不要申请空间,实现“原地”操作。
三、设计与编码
1、基本思想
把字符数组看成数组ab转换成数组ba(a代表数组的前i个元素,b代表数组中余下的n-i个元素),先将a逆置得到a~rb,,再将b逆置得到a~rb~r,最后将整个a~rb~r逆置得到(a~rb~r)~r=ba。
2、C++代码:
#include<iostream>
#include<string>
#include<sys/>
using namespace std;
void reverse(int i,int j,char ch[])
{
char x;
while(i<j)
{
x=ch[i];
ch[i]=ch[j];
ch[j]=x;
i++;
j--;
}
}
int main()
{
timeb t1,t2;
long t;
ftime(&t1);
int n,m,k;
char ch[20];
cin>>n;
while(n--)
{
cin>>m>>ch>>k;
cout<<"请输入数组的长度(1~20): "<<m<<endl;
cout<<"请输入"<<m<<"个字符数组元素: "<<ch<<endl;
cout<<"请输入数组左移循环的位数(1~"<<m<<"): "<<k<<endl;
cout<<"原字符数组: "<<ch<<endl;
reverse(0,k-1,ch);
reverse(k,m-1,ch);
reverse(0,m-1,ch);
cout<<"循环左移后的字符数组为: "<<ch<<endl;
}
ftime(&t2);
t=(-)*1000+(-);
cout<<t<<"毫秒"<<endl;
r