文章

27

粉丝

0

获赞

0

访问

1.8k

头像
2016年计算机学科专业基础综合试题 - 第43题回答
数据结构
发布于2025年10月21日 17:17
阅读数 16

(1)

首先将集合A排序:

若n为奇数,则|n1-n2|=1,选择前n/2个元素为A1,剩余的元素为A2。

若n为偶数,则|n1-n2|=0,选择前n/2个元素为A1,剩余的元素为A2。。

(2)

// 进行归并排序

void mergesort(vector<int> &A, int l, int r)

{

  if (l == r)

    return;

  int mid = l + r >> 1;

  mergesort(A, l, mid);

  mergesort(A, mid + 1, r);

  // 进行二路归并

  vector<int>temp;

  int i = l, j = mid + 1, cnt = r - l + 1;

  while(cnt--) {

    if (i <= mid && A[i] < A[j])

      temp.push_back(A[i++]);

    else

      temp.push_back(A[j++]);

  }

  for(int i = l; i <= r; i++)

    A[i] = temp[i - l];

}

 

std::pair<vector<int>, vector<int> > solve(vector<int> &A)

{

  int n = A.size();

  int m = n / 2;

  mergesort(A, 0, n - 1);

  vector<int>A1, A2;

  for(int i = 0; i &...

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发