TAOCP 第三卷 17x 页, 中文版
cmp(a,b) -> max(a,b) = h, min(a,b) = i
cmp(c,d) -> max(c,d) = j, min(c,d) = k
cmp(h,j) -> max(h,j) = o, min(h,j) = p
则 a, b, c, d 可以在三次比较后构成
a -> c
/ /
b d
这样的一个大小关系, 然后把 e 在 b->a->c 这个串里用两次比较后可以找到插入位置,
得到一个新的 b->a->e->c 这样的串(大小关系按实际的走), 然后把 d 在长度为 4 的串
中二分除最大的那个(因为已经有大小关系了), 两次比较搞定
一共是 3+2+2
cmp(a,b) -> max(a,b) = h, min(a,b) = i
cmp(c,d) -> max(c,d) = j, min(c,d) = k
cmp(h,j) -> max(h,j) = o, min(h,j) = p
则 a, b, c, d 可以在三次比较后构成
a -> c
/ /
b d
这样的一个大小关系, 然后把 e 在 b->a->c 这个串里用两次比较后可以找到插入位置,
得到一个新的 b->a->e->c 这样的串(大小关系按实际的走), 然后把 d 在长度为 4 的串
中二分除最大的那个(因为已经有大小关系了), 两次比较搞定
一共是 3+2+2