文章

77

粉丝

84

获赞

2

访问

32.1k

头像
【2016年】408计算机统考真题模拟考试 - 第43题答案笔记
数据结构
发布于2024年10月31日 11:34
阅读数 409

计算机考研408统考历年真题及答案解析

1)要满足|n1-n2|最小,且|S1-S2|最小,则采用将最小元素都放到S1,最大元素都放到S2,且两个集合相差元素个数不超过

采用快速排序,将集合A按递增次序排序,同时将前n/2个元素视为A1,后n/2个元素视为A2

2)

  1. int partition(int A[], int L, int R) {
  2. int mid = A[L];
  3. while (L<R) {
  4. while (A[R]>=mid && L<R) R--;
  5. A[L]=A[R];
  6. while (A[L]<=mid && L<R) L++;
  7. A[R]=A[L];
  8. }
  9. A[L]=mid;
  10. return L;
  11. }
  12. void Qsort(int A[], int L, int R) {
  13. if (R<=L) retrun;
  14. int M = partition(A, L, R);
  15. Qsort(A, L, M-1);
  16. Qsort(A, M+1, R);
  17. }
  18. int A1[n/2];//保存A1集合元素
  19. int A2[n/2];//保存A2集合元素
  20. void split(int A[], int len) {
  21. Qsort(A, 0, len-1);
  22. for (int i=0; i<len/2; i++) {
  23. A1[i]=A[i];
  24. A2[i]=A[i+len/2];
  25. }
  26. }

3)时间复杂度为O(nlogn),空间复杂度O(logn)

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发