当前位置: 首页 > 知识库问答 >
问题:

分治冒泡排序算法

乜业
2023-03-14

这学期我们学习了分而治之,在分而治之中,问题被分成子问题,然后像合并排序或快速排序一样解决。

虽然我发布这个问题不是为了让你们解决我的作业,我们的教授给了我们一个任务,让我们把冒泡排序作为一种分治算法来实现,现在我坐在笔记本电脑上,几天都在挠头,想知道冒泡排序是如何分治算法的。

如果我试图将冒泡排序实现为分治,数组必须被分割,当我将数组划分为最后一个元素,然后将其合并回已排序的形式时,算法就变成了合并排序。
如果我通过递归调用bubbleSort(数组,size-1)来实现它,算法就变成了Reduce and conquer。

我的问题是“如何将冒泡排序实现为分治算法?”

共有1个答案

程祺
2023-03-14

假设您编写了一个bubblesort函数,该函数允许对数组的一部分进行排序:

bubblesort(arr, start, end)
{
    // sorts the items from arr[start] to arr[end]
}

因此,如果数组[1,7,4,9,6,3,2,5]并称为bubblesort(arr,0,3),则结果数组将为[1,4,7,9,6,3,2,5]

现在想象一下,如果你打了这些电话,会发生什么:

bubblesort(arr, 0, 1);
bubblesort(arr, 2, 3);
bubblesort(arr, 4, 5);
bubblesort(arr, 6, 7);
bubblesort(arr, 1, 3);
bubblesort(arr, 4, 7);
bubblesort(arr, 0, 7);

它与合并排序是相同的调用模式,但肯定不是合并排序。

 类似资料:
  • 主要内容:冒泡排序算法的具体实现冒泡排序是所有排序算法中最简单、最易实现的算法,有时也称为起泡排序算法。 使用冒泡排序算法对 n 个数据进行排序,实现思路是:从待排序序列中找出一个最大值或最小值,这样的操作执行 n-1 次,最终就可以得到一个有序序列。 举个例子,对 {14, 33, 27, 35, 10} 序列进行升序排序(由小到大排序),冒泡排序算法的实现过程是: 从 {14, 33, 27, 35, 10} 中找到最大值

  • JavaScript算法-冒泡排序 冒泡排序 最慢的排序算法之一 冒泡排序,之所以这幺叫是因为使用这种排序算法排序时,数据值就会像气泡一样从数组的一端漂浮到另一端。假设正在将一组数字按照升序排列,较大的值会浮动到数组的右侧,而较小的值会浮动到数组的左侧。之所以会产生这种现象是因为算法会多次在数组中移动,比较相邻的数据,当左侧值大于右侧值时将它们进行互换。 function bubbleSort()

  • 冒泡排序(Bubble Sort)也是一种简单直观的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端。 作为最简单的排序算法之一,冒泡排序给我的感觉就像 Abandon 在单词书里出现的感觉一样,每次都在第一页第一位

  • 1. 前言 本节内容是排序算法系列之一:冒泡排序,主要讲解了冒泡排序的主体思路,选取了一个待排序的数字列表对冒泡排序算法进行了演示,给出了冒泡排序算法的 Java 代码实现,帮助大家可以更好地理解冒泡排序算法。 2. 什么是冒泡排序? 冒泡排序(Bubble Sort),是计算机科学与技术领域中较为简单的一种排序算法。 它重复地遍历要排序的序列,会依次比较两个相邻的元素,如果发现两个相邻的元素顺序

  • 本文向大家介绍Javascript冒泡排序算法详解,包括了Javascript冒泡排序算法详解的使用技巧和注意事项,需要的朋友参考一下 比较相邻的元素。如果第一个比第二个大,就交换他们两个。 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。 针对所有的元素重复以上的步骤,除了最后一个。 持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需

  • 本文向大家介绍C++冒泡排序算法实例,包括了C++冒泡排序算法实例的使用技巧和注意事项,需要的朋友参考一下 冒泡排序 大学学习数据结构与算法最开始的时候,就讲了冒泡排序;可见这个排序算法是多么的经典。冒泡排序是一种非常简单的排序算法,它重复地走访过要排序的数列,每一次比较两个数,按照升序或降序的规则,对比较的两个数进行交换。比如现在我要对以下数据进行排序: 10 3 8 0 6 9 2 当使用冒泡