
数据结构算法(并说明时间复杂度和空间复杂度)
设n(n>1)个整数存放在一维数组R中。设计一个在时间和空间两方面尽可能高效的算法。将R中保存的整数序列循环左移P(0<P<n)个位置,即将R中的数据由(X0,X1,…,...
设n(n>1)个整数存放在一维数组R中。设计一个在时间和空间两方面尽可能高效的算法。将R中保存的整数序列循环左移P(0<P<n)个位置,即将R中的数据由(X0,X1,…,Xn-1)变换为(Xp,Xp+1,…,Xn-1,X0,X1,…,Xp-1)。要求设计算法并说明算法的时间复杂度和空间复杂度。
展开
1个回答
展开全部
算法主要用了一个额外的先入后出的线性表(即栈),假定数组为Num[n],流程如下:
1.先申请一个能存放n个整数的栈。
2.把原有数组的后n-p个元素,从后面Num[n-1]到Num[p]开始依次压入栈。
3.把数组的前p个元素,从Num[p-1]开始,把Num[n-1]=Num[p-1],依次类推,直到
Num[n-p]=Num[0].
4.把栈中的数弹出,依次放入数组Num[0]、Num[1]····中,直到放完。
5,这样所得的结果就是所需要的结果。
时间复杂度O(n),空间复杂度也是O(n).
1.先申请一个能存放n个整数的栈。
2.把原有数组的后n-p个元素,从后面Num[n-1]到Num[p]开始依次压入栈。
3.把数组的前p个元素,从Num[p-1]开始,把Num[n-1]=Num[p-1],依次类推,直到
Num[n-p]=Num[0].
4.把栈中的数弹出,依次放入数组Num[0]、Num[1]····中,直到放完。
5,这样所得的结果就是所需要的结果。
时间复杂度O(n),空间复杂度也是O(n).

2023-08-15 广告
通常情况下,我们会按照结构模型把系统产生的数据分为三种类型:结构化数据、半结构化数据和非结构化数据。结构化数据,即行数据,是存储在数据库里,可以用二维表结构来逻辑表达实现的数据。最常见的就是数字数据和文本数据,它们可以某种标准格式存在于文件...
点击进入详情页
本回答由光点科技提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询