顺序表的循环右(左)移

顺序表的循环右(左)移

我们经常能在算法题中看到如下题:

一:在一维数组中A[m+n],依次存放(a1, a2, …, an)和(b1, b2, …, bn),写个函数把它俩位置互换为(b1, b2, …, bn),(a1, a2, …, an)

二:将n (n > 1) 个整数存放到一维数组R中,将R中保存的序列循环左移p (0 < p < n) 个位置(2010年考研真题)

这两个题目其实本质上是相同的,都是对整个数组的循环左移或右移。
注:数组和顺序表的概念类似但是不相同,数组是逻辑结构,顺序表是线性表采用顺序存储方式实现的,而顺序存储方式是物理存储方式,所以二者不能混淆,即顺序表指的是连续存放在内存中的线性表,数组是内存中一串连续内存的名字。

其实我们平常思考很自然会有两种算法:
一:时间复杂度为O(n),空间复杂度为O(n)
       即采取一个辅助数组,将原数组中前p个存入数组后p个位置中,然后将原数组中的后n-p个元素存入前n-p个位置中,这样实现了左移或右移,当然,也可以选择保存前p个元素,将原数组中后n-p个元素前移,最后将前p个元素保存回原数组的后p个位置中。时间复杂度和空间复杂度相同
二&#

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值