13.6 方法merge

我们需要的下一个辅助方法是 merge,让它接受两个排好序的 Deck 对象,并返回一个新的 Deck 对象,新对象包含前两个 Deck 对象中的所有扑克牌,且这些扑克牌是按顺序排列的。这个方法的伪代码类似于下面这样(其中 d1d2 是要进行合并排序的 Deck 对象):

  1. public static Deck merge(Deck d1, Deck d2) {
  2. // 新建一个可容纳所有扑克牌的Deck对象
  3. // 用索引i和j来分别记录当前我们位于两个传入的Deck对象的什么位置
  4. int i = 0;
  5. int j = 0;
  6. // 用索引k来遍历新创建的Deck对象(result)
  7. for (int k = 0; k < result.cards.length; k++) {
  8. // 如果d1为空,则d2获胜
  9. // 如果d2为空,则d1获胜
  10. // 如果d1和d2都不为空,则对两张牌进行比较
  11. // 将获胜的牌加入新创建的Deck对象中,并放在索引k指定的位置
  12. // 将i或j加1
  13. }
  14. // 返回新创建的Deck对象
  15. }

本章末尾有一个练习,要求你实现方法 merge