不久前,我们被分配编写一个C程序,使用d叉最大堆(每个节点最多有d个子节点)对n个数字的数组进行排序。程序需要要求用户输入d的值,该值介于2和数组大小之间。当我检查我的程序时,我不小心将d的值输入为1,但一些方式下,算法成功地使用1叉堆正确地对数组进行了排序,尽管它花费了比正常d值更多的时间。
这怎么可能呢?1叉堆甚至不是堆,只是像列表一样,每个节点只有一个子节点。有人能解释这种排序是如何发生的吗?
这怎么可能呢?1叉堆甚至不是堆,只是像列表一样,每个节点只有一个子节点。有人能解释这种排序是如何发生的吗?