分而治之方法还可以用于实现另一种完全不同的排序方法,这种排序法称为快速排序(quick sort)。在这种方法中, n 个元素被分成三段(组):左段l e f t,右段r i g h t和中段m i d d l e。中段仅包含一个元素。左段中各元素都小于等于中段元素,右段中各元素都大于等于中段元素。因此l e f t和r i g h t中的元素可以独立排序,并且不必对l e f t和r i g h t的排序结果进行合并。m i d d l e中的元素被称为支点( p i v o t )。图1 4 - 9中给出了快速排序的伪代码
上传时间: 2015-04-27
上传用户:kristycreasy
---- Huffman 算法的不同实现 本目录下的程序用8种不同的方式实现了Huffman编码算法,这8种方式分别是 * huffman_a 使用链表结构生成Huffman树的算法,这是最基本的实现方法,效率最低。 * huffman_b 使用《数据结构》(严蔚敏,吴伟民,1997,C语言版)中给出的算法,将二叉树存放在连续空间里(静态链表),空间的每个结点内仍有左子树、右子树、双亲等指针。 * huffman_c 使用Canonical Huffman编码,同时对huffman_b的存储结构进行改造,将二叉树存放在连续空间tree里,空间的每个结点类型都和结点权值的数据类型相同,空间大小为2*num,tree[0]未用,tree[1..num]是每个元素的权值,生成Huffman后,tree[1..2*num-1]中是双亲结点索引。 * huffman_d 在huffman_c的基础上,增加预先排序的功能先用QuickSort算法对所有元素的权值从小到大排序,这样,排序后最前面的两个元素就是最小的一对元素了。我们可以直接将它们挑出来,组合成一个子树。然后再子树的权值用折半插入法插到已排序的元素表中, 保证所有结点有序。为了保证初始元素的顺序不变,我们另外使用了一个索引数组,所有排序中的交换操作都是在索引数组中进行的
上传时间: 2015-06-12
上传用户:xg262122
许多的排序算法,包括选择排序,堆排序,冒泡排序,折半排序,用java开发。
标签: 排序算法
上传时间: 2014-01-25
上传用户:jiahao131
各种排序:快速排序,堆排序,直接排序,折半排序
上传时间: 2015-12-31
上传用户:anng
利用java语言编制的一些排序源代码,如气泡排序法等等。
上传时间: 2013-12-16
上传用户:84425894
通过快速排序,折半排序,希尔排序三种方法进行排序数据,并统计每一种排序在过程中对整数的比较次数和移动次数,并输出结果。
标签: 快速排序
上传时间: 2016-05-21
上传用户:BOBOniu
本代码包括二分法查找数据,冒泡排序法,以及伪随机数的生成几个程序
上传时间: 2016-07-17
上传用户:xiaoxiang
数据结构的排序算法之一,利用快速排序法进行排序,本程序是数据结构课程的上机题之一。
上传时间: 2016-08-10
上传用户:manlian
对十种内部排序的比较.有直接排序,快速排序,折半排序,基数排序,堆排序,等.
上传时间: 2014-09-02
上传用户:王庆才
本目录下的源代码均属示例、教学性质。作者不对这些代码的功能和性能作任何担保或承诺。 -------- 功能说明 -------- 本目录下的程序用8种不同的方式实现了Huffman编码算法,这8种方式分别是 * huffman_a 使用链表结构生成Huffman树的算法,这是最基本的实现方法,效率最低。 * huffman_b 使用《数据结构》(严蔚敏,吴伟民,1997,C语言版)中给出的算法,将二叉树存放在连续空间里(静态链表),空间的每个结点内仍有左子树、右子树、双亲等指针。 * huffman_c 使用Canonical Huffman编码,同时对huffman_b的存储结构进行改造,将二叉树存放在连续空间tree里,空间的每个结点类型都和结点权值的数据类型相同,空间大小为2*num,tree[0]未用,tree[1..num]是每个元素的权值,生成Huffman后,tree[1..2*num-1]中是双亲结点索引。 * huffman_d 在huffman_c的基础上,增加预先排序的功能先用QuickSort算法对所有元素的权值从小到大排序,这样,排序后最前面的两个元素就是最小的一对元素了。我们可以直接将它们挑出来,组合成一个子树。然后再子树的权值用折半插入法插到已排序的元素
上传时间: 2013-12-20
上传用户:franktu