小白算法积累——顺序表8#数组表示顺序表+逆置+互换

题目:已知在一维数组A[m+n]中依次存放两个线性表(a1,a2,a3,a4…am)和(b1,b2,b3…,bn)
试编写一个函数,将数组中两个顺序表的位置互换,即将(b1,b2,b3,…bn)放在(a1,a2,a3…am)的前面

关键字:数组 有序顺序表 逆置 互换

思路
关注:利用一个“全部逆置”函数来实现
1.设计***全部逆置***函数通用版
思路:将所有 需被逆置元素们,头尾互换即可
需要变量:逆置起始元素 aleft,逆置终止元素 aright,互换小助手temp
逆置操作结束位置,(所有逆置元素中点):mid=(left+right)/2
出错情况:left>right or right>arraySize
2.将数组A[m+n]中的全部元素(a1,a2,a3…am,b1,b2,b3…bn)全部逆置,得到(bn,bn-1,bn-2,…b1,am,am-1,am-2,…a1)
需要变量:逆置起始下标 0
逆置终止下标m+n-1

3.分别将b数组和a数组“全部逆置

typedef int DataType;
void Reverse(DataType A[],int left,int right,int arraySize){
//逆置(aleft,aleft+1,aleft+2...aright)为(aright,aright-1,...aleft+1,aleft)
if(left>=right||right>=arraySize)
   return false;
int mid=(left+right)/2;
for(int i=0;i<=mid-left;i++){
  Datatype temp=A[left+i];
  A[left+i]=A[right-i];
  A[right-i]=temp;
  }
}

void Exchange(DataType A[],int n, int arraySize){
//数组A[m+n]中,从0到m-1存放顺序表(a1,a2,a3,...am),从m到m+n-1存放顺序表(b1,b2,b3...bn),算法将这两个表的位置互换
Reverse(A,0,m+n-1,arraySize);
Reverse(A,0,n-1,arraySize);
Reverse(A,n,m+n-1,arraySize);
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值