« 返回首页

图解排序算法

刷新 问题规模: 20 · 30 · 40 · 50     放大: 1x · 2x · 3x
算法: 插入排序 · 选择排序 · 冒泡排序 · 希尔排序 · 归并排序 · 堆排序 · 快速排序 · 快速排序三平均分区

算法

for i = 1:n,
k = i
for j = i+1:n, if a[j] < a[k], k = j
→ invariant: a[k] smallest of a[i..n]
swap a[i,k]
→ invariant: a[1..i] in final position
end

属性

  • 不稳定
  • O(1) 额外空间
  • Θ(n2) 比较
  • Θ(n) 互换
  • 不适应性

讨论

这里介绍的比较一下,人们可能会得出这样的结论:选择排序不应该被使用。它并不适应以任何方式(请注意,上述四个动画运行步调一致)的数据,所以它的运行时间始终是二次方。

然而,选择排序具有极大地减少交换数的性质。在交换单位的消耗成本很高的应用中,选择排序很可能也是合适的算法选择。

指示

  • 点击刷新来重新启动在行、列或整个表格中的动画。
  • 可以直接点击动画图像来启动或重新启动它。
  • 点击问题的规模来重置所有的动画。

关键

  • 黑色的值是已经排好序的。
  • 灰色的值是还未完成排序的。
  • 一个红色的三角形标记算法的位置。
  • 深灰色的值表示当前时间间隔(希尔排序, 归并排序, 快速排序)。
  • 一对红色的三角形标记着左、右指针(快速排序)。

参考文档

Algorithms in Java, Parts 1-4, 3rd edition by Robert Sedgewick. Addison Wesley, 2003.

Programming Pearls by Jon Bentley. Addison Wesley, 1986.

Quicksort is Optimal by Robert Sedgewick and Jon Bentley, Knuthfest, Stanford University, January, 2002.

Dual Pivot Quicksort: Code and Discussion.

Bubble-sort with Hungarian ("Csángó") folk dance YouTube video, created at Sapientia University, Tirgu Mures (Marosvásárhely), Romania.

Select-sort with Gypsy folk dance YouTube video, created at Sapientia University, Tirgu Mures (Marosvásárhely), Romania.

Sorting Out Sorting, Ronald M. Baecker with the assistance of David Sherman, 30 minute color sound film, Dynamic Graphics Project, University of Toronto, 1981. Excerpted and reprinted in SIGGRAPH Video Review 7, 1983. Distributed by Morgan Kaufmann, Publishers. Excerpt.