在CSDN下了一个JavaScript实现的排序演示程序(后来发现原来是从日本的一个分享网站下载过来的)。于是很有兴致了做了几个单词的汉化(一共没有超过10个单词),并加了三个新的排序演示(都是从Wiki的基础上稍加修改而成的),同时也让代码能离线使用(只是把其中没有下载的一个js文件下载下来了而矣,并很蛋疼地改了几个文件名)。
觉得对于学习并深入理解各种排序算法的槑槑来说还是挺有用的,对将要给别人教授排序算法的槑槑来说也是相当有用的。
这里就简单地介绍一下波及到的算法呗。
冒泡排序:从头开始,将相邻的两个数中大的往后移,直到移到尾部,然后又从头开始。
选择排序:从全部数中选出最小的放在第一位,然后又从剩下的选最小的放在第二位。
鸡尾酒排序:冒泡的改进版,冒到尾部后,不是从头开始,而是直接从尾部开始往头部冒。
插入排序:把将要排序的数插到前面已经排好序的序列中,并保证插入后还是有序的。
希尔排序:插入排序的改进版,把数组虚拟成几个分段进行插入排序,并不断缩小分段。
快速排序:对于要排序的数,把比它大的入在它右边,比它小或等于它的放在它左边,然后在两边再次运用同样的方法。
堆排序:先将数组生成小根堆,然后依次将堆顶删除出来。
猴子排序:随机的交换任意两个数,如果是有序的话,就结束;如果还是无序,则继续随机下去。
地精排序:冒泡排序的改进版,每冒一次泡后,如果前面的数比后面的数大了,就回转过头来又冒一次。
砖排序:其实是奇偶排序,不过砖排序比较让人拍砖。交替地排序奇数位置和偶数位置相邻的两数。
梳子排序:把数组虚拟成几个分段,分段的大小按某种比例确定,然后对这些分段应用冒泡。
有图有真相:
代码可以在此处下载:
http://www.kuaipan.cn/file/id_1284839466902070.htm
现在搞了一个演示的网页,可以借鉴一下:
http://www.ankiang.com/SortVisual/