【发布时间】:2020-07-23 09:09:46
【问题描述】:
本学期我们学习了分而治之,其中问题被划分为子问题,然后像合并排序或快速排序一样解决。
虽然我不是为了让你们解决我的任务而发布这个问题,但我们的教授给了我们一个任务来实现冒泡排序作为一种分而治之的算法,现在我坐在我的笔记本电脑上为冒泡排序的方式挠了几天可以分治算法。
如果我尝试将 冒泡排序 实现为分而治之,则数组必须被划分,当我将数组划分为其最后一个元素然后将其合并回其排序形式时,算法就变成了合并排序。
如果我通过递归调用 bubbleSort(array,size-1) 来实现它,算法就变成了 Reduce and Conquer。
我的问题是“如何将冒泡排序实现为分而治之的算法?”
【问题讨论】:
-
imo,你是对的。合并排序只是冒泡排序(它本身是一种迭代算法)的分而治之的方法。也许你的教授对你做了一个诡计问题。
-
给定冒泡排序算法及其复杂度为O(n2),将其转换为分治算法并计算其时间复杂度。
-
假设您刚刚编写了一个常规冒泡排序算法,然后在合并排序中使用它代替了合并助手。
-
没办法。我怎么知道您已经编写了自己的冒泡排序或合并排序? :)
标签: c++ algorithm sorting bubble-sort divide-and-conquer