zoukankan      html  css  js  c++  java
  • 数据结构学习-数组A[m+n]中依次存放两个线性表(a1,a2···am),(b1,b2···bn),将两个顺序表位置互换

    将数组中的两个顺序表位置互换,即将(b1,b2···bn)放到(a1,a2···am)前边。

    解法一:

    将数组中的全部元素(a1,a2,···am,b1,b2,···bn)原地逆置为(bn,bn-1,···b1,am,am-1···a1),再对前n个元素和后m个元素分别逆置,得到(b1,b2···bn,a1,a2···am),从而实现位置互换。

    代码:

    void Reverse(int a[],int left,int right,int arraySize)
    {//逆转(aleft,aleft+1,aleft+2···,aright)为(aright,aright-1,···,aleft)
        if(left>=right||right>=arrySize)
          return;
        int mid=(left+right)/2;
        for(int i=0;i<=mid-left;i++)
        {
            int temp=A[left+i];
            A[left+i]=A[right-i];
            A[right-i]=temp;
        }
    }        
    
    void Exchange(int A[],int m,int n,int arraySize)
    {
      Reverse(A,0,m+n-1,arrySize);
      Reverse(A,0,n-1,arrySize);   
      Reverse(A,n,m+n-1,arrySize); 
    }

    解法二:

    借助辅助数组实现。

    创建大小m的数组S,将A中前m个整数依次暂存在S中,同时将A中后n个元素左移,再将S中暂存的依次放回A中的后续单元。

    void Exchange(int A[],int m,int n)
    
    {
    
      int S[m],i;
      for(i=0;i<m;i++)//将前m个暂存至S
          S[i]=A[i];
      for(i=0;i<n;i++)//将后n个移到前面
        A[i]=A[m+i];
      for(i=0;i<m;i++)//将S中暂存的依次插入后面
        A[n+i]=S[i];
    }
    不积硅步,无以至千里。
  • 相关阅读:
    Socket编程注意接收缓冲区大小
    Ubuntu 14.04环境变量修改
    python模块------json
    解决ssh连接linux系统特别慢的问题
    centos7 安装 ftp 服务及创建 repo源
    qcow2镜像制作
    k8s-helm01-----helm基本使用
    mysql常用sql
    js中自执行函数(function(){})()和(function(){}())区别
    npm镜像指定用淘宝镜像去下载
  • 原文地址:https://www.cnblogs.com/wyloving/p/8290047.html
Copyright © 2011-2022 走看看