天天看点

实现顺序表前N元素和后M元素互换位置

//算法思想:先将数组A[m+n]的全部元素原地逆置,再对前m和后n个元素分别逆置
bool Reverse(SqList& A, int left, int right) {
  if (left >= right || right > A.length || A.length <= 0)//取值范围
  {
    return false;
  }
  int i = 0, j = 0, p = 0, k = 0;
  int mid = (left + right) / 2;
  for (int i = 0; i <= mid-left; i++)//前后两两交换
  {
    int  temp = A.data[left + i];
    A.data[left + i] = A.data[right - i];
    A.data[right - i] = temp;
  }
  return true;
}
bool Exchange(SqList& A, int m, int n)
{

  Reverse(A, 0, m + n - 1);
  Reverse(A, 0, n - 1);
  Reverse(A, n, m + n - 1);
  return true;
}