顺序表逆置

作者: 飞白非白 | 来源:发表于2018-12-04 23:31 被阅读1次
    // 将数组中的两个顺序表位置互换,即将(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); 
    }
    

    相关文章

      网友评论

        本文标题:顺序表逆置

        本文链接:https://www.haomeiwen.com/subject/czybcqtx.html