摘要: 支持两种操作:删除最大元素和插入元素的数据类型叫做优先队列。 队列:删除最老的元素。 栈:删除最新的元素。 基于二叉堆数据结构的一种优先队列的经典实现方法,用数组保存元素并按照一定条件排序。 数据结构二叉堆能够很好地实现优先队列的基本操作。在二叉堆的数组中,每个元素都要保证大于等于另两个特定位置的元 阅读全文
posted @ 2018-05-10 21:53 ppwq 阅读(218) 评论(0) 推荐(0) 编辑
摘要: 其中partition()函数保证每个数组的首个元素a[0]在整个数组中的排序位置是正确的,并以此值为界将数组分成两个不包含它的数组在分别进行排序,如此迭代,完成排序。 三向切分的快速排序 在处理含有大量重复元素的数组时,使用三向切分,将数组切分为小于、等于和大于切分元素的三个小数组,可以提高算法的 阅读全文
posted @ 2018-05-09 21:29 ppwq 阅读(192) 评论(0) 推荐(0) 编辑
摘要: 归并排序:所需时间为NlogN,但所需额外空间与N成正比。 原地归并: 基于原地归并,实现了自顶向下的归并排序: 对于长为N的任意数组,自顶向下的归并排序需要0.5NlgN到NlgN次比较。主要缺点是辅助数组所使用的额外空间和N的大小成正比。另外,归并排序在小规模问题中对于递归方法的调用过于频繁,可 阅读全文
posted @ 2018-05-08 21:33 ppwq 阅读(165) 评论(0) 推荐(0) 编辑
摘要: 数组排序实现的框架类 选择排序:找到数组中最小的元素并交换到第一个位置,之后再剩下的元素中找到最小的再交换到第二个元素中,如此循环下去,总共需要大约N2/2次比较和N次交换。 插入排序:将每一个元素插入到其他已经有序的元素中的适当位置。对于一个很多元素已经有序的数组来说这样排序会快得多。最好情况是N 阅读全文
posted @ 2018-05-07 09:55 ppwq 阅读(142) 评论(0) 推荐(0) 编辑
摘要: quick-find算法 quick-union算法 加权quick-union算法 阅读全文
posted @ 2018-05-03 21:17 ppwq 阅读(151) 评论(0) 推荐(0) 编辑
摘要: 队列的实现(链表): 包的实现(链表): 阅读全文
posted @ 2018-04-27 21:26 ppwq 阅读(194) 评论(0) 推荐(0) 编辑