令程序员为之疯狂的排序算法教学视频罗马尼亚人酷爱跳舞,不仅在电影和节日里,随处可见舞蹈,就连大学计算机课程中的排序算法教学,也是以舞蹈的形式表现出来的。罗马尼亚TirguMures地区的Sapientia大学制作了一系列以民间舞蹈形式表达的各种排序算法的工作原理。这是视频。舞蹈很好,但我很难判断教学效果如何。至少让我对这些排序算法的效率产生了严重的怀疑。排序算法:选择排序选择排序(Selectionsort)是一种简单直观的排序算法。它的工作原理如下。先在未排序的序列中找到最小(最大)的元素,将其存入已排序序列的开头,然后继续从剩余未排序的元素中寻找最小(最大)的元素,然后放在已排序序列的末尾.依此类推,直到所有元素都排序完毕。选择排序的主要优点与数据移动有关。如果元素处于正确的最终位置,则不会移动它。选择排序每次交换一对元素,至少其中一个会被移动到它的最终位置,所以对n个元素的列表排序总共最多执行n-1次交换。在所有完全依靠交换来移动元素的排序方法中,选择排序是一种非常好的方法。排序算法:HillsortingFascher排序,也称为递减增量排序算法,是插入排序的一种更高效的改进版本。希尔排序是一种不稳定的排序算法。希尔排序是基于插入排序的以下两个性质的改进方法:1.插入排序在对几乎已排序的数据进行操作时效率很高,即可以达到线性排序的效率2.但插入排序一般是效率低下,因为插入排序一次只能移动一位数据。.它迭代遍历要排序的数组,一次比较两个元素,如果顺序错误则交换它们。重复访问序列的工作,直到不需要交换,即序列已经排序。这个算法的名字来源于这样一个事实,即较小的元素会通过交换慢慢“浮”到序列的顶部。冒泡排序需要对n项进行O(n^2)次比较,并且可以就地排序。尽管该算法是最容易理解和实现的排序算法之一,但它对于具有多个元素的序列进行排序时效率非常低。排序算法:快速排序快速排序是由TonyHall开发的一种排序算法。平均而言,对n项进行排序需要O(nlogn)次比较。在最坏的情况下需要进行O(n2)次比较,但这并不常见。事实上,快速排序通常比其他OO(nlogn)算法快得多,因为它的内部循环可以在大多数体系结构上有效地实现。排序算法:归并排序归并排序(Mergesort,台湾译:归并排序)是一种基于归并操作的有效排序算法。该算法是分而治之的一个非常典型的应用。排序算法:插入排序插入排序的算法描述是一种简单直观的排序算法。它的工作原理是构造一个有序的序列,对于未排序的数据,在已排序的序列中从后往前扫描,找到对应的位置并插入。在插入排序的实现中,通常使用原地排序(即只需要使用O(1)额外空间的排序),所以在从后往前扫描的过程中,需要反复移动逐步向后排序元素,为第一个元素提供插入空间。本文来自:http://www.vaikan.com/sort-dance/
