桶排序是一种稳定的排序方法,也是一种外排序。
桶排序的时间复杂度:最坏情况运行时间:当分布不均匀时,全部元素都分到一个桶中,则O(n^2),当然[算法导论8.4-2]也可以将插入排序换成堆排序、快速排序等,这样最坏情况就是O(nlgn)。最好情况运行时间:O(n)。
也就说,前面介绍的排序算法要么是O(n^2),要么是O(nlogn),只有桶排序是可能实现O(n)排序的...
分类:
编程语言 时间:
2015-02-25 18:44:00
阅读次数:
184
带参宏定义和inline修饰的内联函数都是在编译时,用函数体替换掉宏调用或函数调用。这样用的好处是减少调用函数所花费的时间。例如:算法导论在讲到堆排序时说的,好的堆排序实现一般是把Left(i),Right(i),Parent(i)的实现通过宏定义或内联函数来实现,这就是因为当我们对一组数据使用堆排...
分类:
其他好文 时间:
2015-02-25 12:53:40
阅读次数:
114
今天我们再来讨论一下选择类排序,选择类排序分为:简单排序,树形选择排序和堆排序。但我们主要说的是简单和堆排序两个,因为树形选择排序使用了较多的辅助空间,以及和∞进行多余比较,为弥补树形选择排序的不足之处, J.W.J.Williams 在 1964 年提出了进一步的改进方法,即堆排序.对于我个人而言。。一开始并不是很理解它的算法思想,纠结了许久。在网上查找资料的时候发现这位大神的文章思路十分清晰,...
分类:
编程语言 时间:
2015-02-24 12:39:21
阅读次数:
230
今天我们再来讨论一下选择类排序,选择类排序分为:简单排序,树形选择排序和堆排序。但我们主要说的是简单和堆排序两个,因为树形选择排序使用了较多的辅助空间,以及和∞进行多余比较,为弥补树型选择排序的这些缺点, J.W.J.Williams 在 1964 年提出了进一步的改进方法,即堆排序.对于我个人而言。。一开始并不是很理解它的算法思想,纠结了许久。在网上查找资料的时候发现这位大神的文章思路十分清晰,...
分类:
编程语言 时间:
2015-02-24 09:11:11
阅读次数:
249
堆优先队列:特殊的”队列”,取出元素的顺序是依照元素的优先权(关键字)大小,而不是元素进入队列的先后顺序
堆是优先队列的完全二叉树表示。
堆的两个特性:
①结构性:用数组表示的完全二叉树
②有序性:任意结点的关键字是其子树所有结点的最大值,叫最大堆(或最小值,叫最小堆)(注意从根结点到任意结点路径上结点序列的有序性)下面举一个最大堆的例子。
/** 最大堆的操作 */
typedef st...
分类:
编程语言 时间:
2015-02-17 22:21:37
阅读次数:
231
根据《数据结构与算法分析——Java语言描述》一书的顺序来总结的。插入排序(insertion sort)希尔排序(Shellsort)堆排序(heapsort)并归排序(mergesort)快速排序(quicksort)桶式排序(bucketsort)外部排序(external sorting)...
分类:
编程语言 时间:
2015-02-15 21:49:05
阅读次数:
178
八大排序算法实现
插入排序算法实现
希尔排序算法实现
选择排序算法实现
冒泡排序算法实现
归并排序算法实现
快速排序算法实现
堆排序算法实现
基数排序算法实现...
分类:
编程语言 时间:
2015-02-15 15:11:43
阅读次数:
154
1. 二叉堆是完全二叉树,即它的N级子节点放慢之后才会去放N+1级子节点2. 二叉堆用数组实现,每个子节点通过固定的索引找到(由完全二叉树保证)3. 二叉堆排序只保证堆顶有效,即堆顶是最大值或最小值,是优先队列实现的不二选择4. 二叉堆删除节点,需要重新组织堆内结构,不太高效5. 二叉树,也叫二叉搜...
分类:
其他好文 时间:
2015-02-15 12:05:52
阅读次数:
141
package com.juxuny.heap;
import java.lang.reflect.Array;
import java.util.ArrayList;
import java.util.List;
/**
* Created by Juxuny on 2015/2/10.
*/
public class Heap {
private int MAX = 2 <<...
分类:
编程语言 时间:
2015-02-10 21:48:29
阅读次数:
224
转载自:http://www.cnblogs.com/yangecnu/p/Introduce-Priority-Queue-And-Heap-Sort.html浅谈算法和数据结构: 五 优先级队列与堆排序在很多应用中,我们通常需要按照优先级情况对待处理对象进行处理,比如首先处理优先级最高的对象,然...
分类:
编程语言 时间:
2015-02-10 11:06:09
阅读次数:
343