`
javayestome
  • 浏览: 1046559 次
  • 性别: Icon_minigender_2
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

Stooge-sort

阅读更多
Stooge-sort(A, i, j)
if A[i] > A[j]
then exchange A[i], A[]
if i + 1 >= j
then return
k = (j - i + 1) / 3
Stooge-sort(A, i, j - k)
Stooge-sort(A, i + k , j)
Stooge-sort(A, i, j - k)
即先排序前2/3部分,然后是后2/3部分,最后再进行前面1/3的排序。

a. 证明算法正确性
由于是递归算法,而初始状态显然成立,因此只要证明当部分排序正确时,整体也能够被正确排序:
第一次排序后,第二部分每个数都不小于第一部分的所有数;
第二次排序后,第二部分某些数被交换到第三部分中,此时第三部分数都不小于第二部分和第一部分的数,但是第二部分的数并不一定都小于第一部分的(因为可能包含第三部分的数,而这些数与第一部分数的大小关系无法确认);
第三次排序后,第二部分的数都不小于第一部分的数。
这样,第一部分的任意数<=第二部分的任意数<=第三部分的任意数
而且各部分的数都已排序,因此整体已被排序。

b. 复杂度分析
递归式
T(n) = 3T(2n/3) + 1
由Master Theorem
T(n) = O(n^log(3/2, 3))
分享到:
评论

相关推荐

    JAVA实现StoogeSort方法排序

    JAVA实现StoogeSort方法排序,简单演示。

    stooge_sort.zip_This Is It

    this program is stooge_sort that writted with c++. this program get an array and sort it in order nlogn.

    排序算法之StoogeSort

    python 排序算法之StoogeSort

    stooge_sort.zip_数据结构_Visual_C++_

    【标题】"stooge_sort.zip_数据结构_Visual_C++_" 涉及到的知识点主要集中在数据结构和排序算法上,特别是 Stooge Sort( stooge_sort )这一特殊的排序算法,以及如何使用 Visual C++ 进行编程实现。 Stooge Sort...

    排序算法-基于Java实现的排序算法之BogoSort实现.zip

    BogoSort,又称为BozoSort或StoogeSort,是一种非常慢的排序算法,它的基本思想是不断地随机打乱数组,直到数组变得有序为止。这个名字来源于“bozo”,意为傻瓜,暗示了其低效性。BogoSort的平均和最坏情况时间...

    排序算法-基于C语言实现的排序算法之BogoSort实现.zip

    BogoSort,也被称为BozoSort或StoogeSort,是一种极其低效的排序算法,其主要思想是不断随机打乱数组,直到数组变得有序为止。由于这个过程完全依赖于随机性,BogoSort的平均和最坏时间复杂度都是O(n!),在实际应用...

    算法设计与分析C++语言描述(陈慧南版)课后答案

    StoogeSort算法是算法设计中的一个重要方面。例如,在第十二章中,证明当n=right-left+1&gt;2时,程序执行下面的语句:int k=(right-left+1)/3;StoogeSort(left,right-k);StoogeSort(left+k,right);StoogeSort(left,...

    sort_utils.zip

    10. 帕斯卡三角排序(Stooge Sort):一种效率较低的排序算法,主要用于教学目的,其复杂度比冒泡排序还高。 在学习这些排序算法的C++实现时,除了理解基本思路,还需要关注如何有效地管理内存、避免不必要的交换...

    算法设计与分析-课后习题集答案.doc

    例如,在问题 12 中,使用了 StoogeSort 算法来对数据进行排序。StoogeSort 算法的时间复杂度为 O(n^2.7095)。 8. 时间复杂度分析 时间复杂度分析是算法设计中的一种重要概念,用于衡量算法的执行效率。例如,在...

    算法分析与设计陈慧南课后答案

    在给定的部分内容中,讨论了 StoogeSort 算法,并分析了其正确性和时间复杂度。例如,第十二章 12 中讨论了 StoogeSort 算法,并分析了其正确性和时间复杂度。 六、冒泡排序、堆排序和快速排序 冒泡排序、堆排序和...

    sort-.rar_数据结构_Visual_C++_

    标题 "sort-.rar_数据结构_Visual_C++_" 暗示了这是一个关于使用Visual C++实现数据结构中的排序算法的项目。这个压缩包很可能包含了一系列源代码文件,演示了14种不同的排序算法。在本文中,我们将深入探讨这些排序...

    算法设计与分析C++语言描述(陈慧南版)课后答案.docx

    - **时间复杂度**:最坏情况下,Stooge Sort的时间复杂度明显高于常见的排序算法如冒泡排序、堆排序和快速排序。 - **适用场景**:由于其较高的时间复杂度,Stooge Sort算法在实际应用中较少见。 ### 总结 通过...

    升压排序.zip

    `sort-develop`可能包含了这样一个实现,可以用来学习和理解升压排序的逻辑。 然而,升压排序的主要价值在于教育意义,它可以帮助我们理解排序算法的分治策略和递归思想。在实际的编程和数据处理中,我们通常会选择...

    算法设计与分析C++语言描述陈慧南版课后答案.docx

    * 排序算法:了解StoogeSort算法的正确性证明,了解递归排序的方法。 * 时间复杂度分析:了解冒泡排序、堆排序、快速排序的最坏时间复杂度,比较不同排序算法的时间复杂度。 第十三章 * 选取算法:了解select算法...

    常用排序算法介绍_示例程序|排序算法_程序.rar

    14. **Stooge Sort( stoogesort)**:虽然效率低,但在特定情况下有较好的表现,主要用于教学目的。 15. **Bogosort**:随机调整数组顺序,直到得到一个有序数组,是一种极其低效的算法,通常用于幽默和教学。 ...

    希尔排序java代码

    最初的希尔排序使用的是原始的增量序列,即每次减半,但现代实现通常采用更复杂的增量序列,如Hibbard序列、Sedgewick序列或Stooge序列等,这些序列旨在更好地减少元素交换的次数,提高排序效率。 Java代码实现希尔...

    Sound of Sorting-数据集

    1. **Stooge Sort**:这是一种非常有趣但效率较低的排序算法,由三个“傻瓜”操作构成,其最坏情况下的时间复杂度为O(n^log3/2),在实际应用中并不常用,但对理解和比较各种排序算法有教育意义。 2. **Bubble Sort*...

Global site tag (gtag.js) - Google Analytics