这学期我们了解了分而治之,其中将问题分为子问题,然后像合并排序或快速排序一样解决了。
尽管我并没有发布这个问题来让大家解决我的任务,但是我们的教授给了我们一个任务,以将Bubble Sort作为分治算法来实现,现在我坐在笔记本电脑上摸索了几天,以讨论Bubble Sort可以分治法。
如果我尝试实现气泡排序作为划分并征服数组,则必须将数组划分为,当我将数组划分为其最后一个元素,然后将其合并回其排序形式时,该算法将变为合并排序。
如果我通过递归调用bubbleSort(array,size-1)来实现,则算法将变为 Reduce and Conquer 。
我的问题是“ 如何将气泡排序作为分而治之的算法来实现?”
分而治之气泡排序算法
•
问答
zxxzsa 回答:分而治之气泡排序算法
假设您编写了一个bubblesort
函数,可以对数组的一部分进行排序:
bubblesort(arr,start,end)
{
// sorts the items from arr[start] to arr[end]
}
因此,如果您有数组[1,7,4,9,6,3,2,5]
并命名为bubblesort(arr,3)
,则结果数组将为[1,5]
。
现在想象一下,如果您拨打这些电话会发生什么:
bubblesort(arr,1);
bubblesort(arr,3);
bubblesort(arr,5);
bubblesort(arr,7);
然后
bubblesort(arr,1,7);
最后,
bubblesort(arr,7);
与合并排序相同的调用模式,但绝对不是合并排序。