据我所知,在合并排序中,我们必须将元素划分为多个组。 但如果数字是素数,那么除法如何可能?我们是否将他们分成不平等的群体? 如果您要提供实现,请使用C或Python进行实现。
答案 0 :(得分:3)
合并排序不要求您将列表拆分为大小相同的组。在任何正确编写的合并代码中,如果组的大小略有不同,则根本不重要。
您通常希望它们接近相同的大小(以均匀分配工作量,降低排序的复杂性),但即使这样也不是绝对必要的。即使将长度为N的序列分为长度为1和长度为(N-1)的子序列,基本的合并排序算法仍然有效(尽管性能很差)。
答案 1 :(得分:0)
假设有2k + 1,它将被分成两部分,k和k + 1
答案 2 :(得分:0)
元素不一定要均匀划分,但让每个元素尽可能少的元素会使整体复杂度最小。
这是m-way合并排序的一般原则,其中m表示你将拥有的组数。