算法中的遍是什么意思?
What is meant by a pass in an Algorithm?
我遇到了一道来自 GATE PYQ 的练习题。
该问题询问合并排序算法中的pass。
下面是问题:
如果使用直接双向归并排序算法对以下元素进行升序排序:
20, 47, 15, 8, 9, 4, 40, 30, 12, 17
那么在算法第二次通过后这些元素的顺序是:
A) 8, 9, 15, 20, 47, 4, 12, 17, 30, 40
B) 8, 15, 20, 47, 4, 9, 30, 40, 12, 17 [正确选项]
C) 15, 20, 47, 4, 8, 9, 12, 30, 40, 17
D) 4, 8, 9, 15, 20, 47, 12, 17, 30, 40
在这种情况下,我无法弄清楚 pass 的含义以及如何找到它。
元素在递归调用中的分布:
20, 37, 15, 8, 9, 4, 40, 30, 12, 17
/ \
20, 47, 15, 8, 9 4, 40, 30, 12, 17
/ \ / \
20, 47, 15 8, 9 4, 40, 30 12, 17
/ \
20, 47 15
排序后:
4 ,8, 9, 15, 12, 17, 20, 30, 40, 47
/ \
8, 9, 15, 20, 47 4, 12, 17, 30, 40
/ \ / \
20, 15, 47 8, 9 4, 30, 40 12, 17
/ \
20, 47 15
术语 pass 的使用意味着该问题询问的是自下而上的合并排序,它首先将 n 个元素的数组视为大小为 1 的 n 运行s。每个 pass 合并偶数和奇数 运行s,将 运行s 的大小加倍(最后一个 运行 除外,它可能更短)。当 运行 大小 >= 元素数量时完成排序。
|20|47|15| 8| 9| 4|40|30|12|17| start
|20 47| 8 15| 4 9|30 40|12 17| after pass 1
| 8 15 20 47| 4 9 30 40|12 17| after pass 2
| 4 8 9 15 20 30 40 47|12 17| after pass 3
| 4 8 9 12 15 17 20 30 40 47| after pass 4, done
我遇到了一道来自 GATE PYQ 的练习题。 该问题询问合并排序算法中的pass。 下面是问题:
如果使用直接双向归并排序算法对以下元素进行升序排序:
20, 47, 15, 8, 9, 4, 40, 30, 12, 17
那么在算法第二次通过后这些元素的顺序是:
A) 8, 9, 15, 20, 47, 4, 12, 17, 30, 40
B) 8, 15, 20, 47, 4, 9, 30, 40, 12, 17 [正确选项]
C) 15, 20, 47, 4, 8, 9, 12, 30, 40, 17
D) 4, 8, 9, 15, 20, 47, 12, 17, 30, 40
在这种情况下,我无法弄清楚 pass 的含义以及如何找到它。
元素在递归调用中的分布:
20, 37, 15, 8, 9, 4, 40, 30, 12, 17 / \ 20, 47, 15, 8, 9 4, 40, 30, 12, 17 / \ / \ 20, 47, 15 8, 9 4, 40, 30 12, 17 / \ 20, 47 15
排序后:
4 ,8, 9, 15, 12, 17, 20, 30, 40, 47 / \ 8, 9, 15, 20, 47 4, 12, 17, 30, 40 / \ / \ 20, 15, 47 8, 9 4, 30, 40 12, 17 / \ 20, 47 15
术语 pass 的使用意味着该问题询问的是自下而上的合并排序,它首先将 n 个元素的数组视为大小为 1 的 n 运行s。每个 pass 合并偶数和奇数 运行s,将 运行s 的大小加倍(最后一个 运行 除外,它可能更短)。当 运行 大小 >= 元素数量时完成排序。
|20|47|15| 8| 9| 4|40|30|12|17| start
|20 47| 8 15| 4 9|30 40|12 17| after pass 1
| 8 15 20 47| 4 9 30 40|12 17| after pass 2
| 4 8 9 15 20 30 40 47|12 17| after pass 3
| 4 8 9 12 15 17 20 30 40 47| after pass 4, done