您的位置:首页 > 理论基础 > 数据结构算法

一道数据结构题

2016-03-23 22:42 337 查看
设将n(n>1)个整数存放到一维数组R中,试设计一个时间和空间两方面尽可能高效的算法,将R中整数序列循环左移p(p>0)个位置,即将R中的整数序列(X0, X1, ..., Xn)变换为(Xp, Xp+1, ..., Xn-1, X0,X1, ..., Xp-1)

要求:

1.给出算法基本设计思想

2.语言实现

3.写出时间和空间复杂度

void reverse(int R[], int l, int r)
{
int tmp;
while (l < r)
{
tmp = R[l];
R[l] = R[r];
R[r] = tmp;
l ++;
r --;
}
}

void move2(int R[], int n, int p)
{
if (p && p > 0)
{
reverse(R, 0, n-1);
reverse(R, 0, p-1);
reverse(R, p, n-1);
}
}


时间复杂度O(n) 空间复杂度O(1)

ps:多锻炼算法可以让自己设计算法的时候更加考虑高效和省空间的算法。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  数据结构