![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
《算法导论》学习
只想瞪你一眼~
这个作者很懒,什么都没留下…
展开
-
【算法导论33】跳跃表(Skip list)原理与java实现
WiKiSkip list是一个用于有序元素序列快速搜索的数据结构,由美国计算机科学家William Pugh发明于1989年。它的效率和红黑树以及 AVL 树不相上下,但实现起来比较容易。作者William Pugh是这样介绍Skip list的: Skip lists are a probabilistic data structure that seem likely to supplant原创 2016-08-14 21:12:48 · 9418 阅读 · 5 评论 -
【算法导论学习-26】 二叉树专题4:红黑树、AVL树、B-Tree
红黑树、AVL树、B-Tree的比较原创 2014-09-02 16:56:24 · 2287 阅读 · 0 评论 -
【算法导论学习-25】 二叉树专题3:Treaps
Treaps,一种不严格的、易于调试编码的平衡二叉树。原创 2014-09-01 16:41:26 · 1704 阅读 · 0 评论 -
【算法导论学习-016】两个已排过序的等长数组的中位数(median of two sorted arrays)
求两个已排过序的等长的数组的中位数(median of two sorted arrays)原创 2014-08-18 16:18:27 · 1293 阅读 · 0 评论 -
【算法导论学习-014】计数排序(CountingSortTest)
计数排序原创 2014-08-17 15:25:02 · 1234 阅读 · 0 评论 -
【算法导论学习-015】数组中选择第i小元素(Selection in expected linear time)
从数组array中找出第k小的元素,即经典的“线性时间选择”问题原创 2014-08-17 20:21:45 · 2157 阅读 · 0 评论 -
【算法导论学习-015】基数排序(Radix sort)
利用计数排序实现基数排序原创 2014-08-17 16:48:59 · 1046 阅读 · 0 评论 -
【算法导论学习-013】堆排序(Heapsort)
堆排序原创 2014-08-15 21:21:33 · 1117 阅读 · 0 评论 -
【算法导论学习-002】归并排序(MergeSort)
参考:《算法导论》P31、P34原创 2014-07-31 21:38:09 · 1206 阅读 · 2 评论 -
【算法导论学习-007】最大子数组和问题(Maximum subarray problem)
参考:算法导论P68 这是个经典问题。原创 2014-08-07 21:41:26 · 976 阅读 · 0 评论 -
【算法导论学习-28】Fibonacci数列及其相关
Fibonacci数列及其相关的数学问题,如何判断一个数是否是斐波那契数列原创 2014-09-03 16:13:02 · 1665 阅读 · 0 评论 -
【算法导论-36】并查集(Disjoint Set)详解
WiKiDisjoint是“不相交”的意思。Disjoint Set高效地支持集合的合并(Union)和集合内元素的查找(Find)两种操作,所以Disjoint Set中文翻译为并查集。 就《算法导论》21章来讲,主要设计这几个知识点: 用并查集计算图的连通区域; 判断两个顶点是否属于同一个连通区域; 链表实现并查集; Rooted tree实现并查集;原创 2016-09-03 11:33:03 · 8642 阅读 · 0 评论 -
【算法导论-35】图算法JGraphT开源库介绍
Wiki《算法导论》从22章开始图算法。但是Java JDK中没有Graph相关的库,自己实现的话可维护性较差。 JGraphT是一个开源的图理论数据结构和算法的开源库。可以在学习《算法导论》的同时学习该库,同时可以基于该库实现《算法导论》中相关图算法。相关资料JGraphT主页 JGraphT 源码GitHub主页 JGraphT jar包GitHub主页 JGraphT实现细节简单实例将原创 2016-08-23 17:44:02 · 6927 阅读 · 0 评论 -
【算法导论-34】红黑树、顺序统计树的Java实现
Wiki在《算法导论》网易公开课的“扩充的数据结构、动态有序统计和区间树”这节课中,作者提供了由两种新型数据结构,即动态有序统计树(Dynamic Order Static Tree,简写为OSTress)和线段树。这两种数据结构都是通过红黑树来扩展产生的。红黑树的java实现在我的博客“【算法导论学习-26】 二叉树专题4:红黑树、AVL树、B-Tree”中,描述了几种树型数据结构的应用场景。红黑原创 2016-08-18 17:05:16 · 1607 阅读 · 1 评论 -
【算法导论-37】Graph的Java实现
前言之前的博客“【算法导论-35】图算法JGraphT开源库介绍”中提到的开源版本的图算法。然而,继续《算法导论》的学习必须自己实现Graph。所以,放弃使用该库,实现自己的Graph类。 注意,本篇博客紧密结合《算法导论》第22章,深度优先、广度优先、拓扑排序算法都取自相关章节的伪代码,这里不再讲解相关原理。Graph的实现基础的Graph类的实现包括以下: ☆支持有向图和无向图两种类型;原创 2016-09-09 20:11:25 · 7073 阅读 · 0 评论 -
【算法导论32-Java中如何覆写Hashcode()函数】
Hash函数今天看了网易公开课上《算法导论》关于Hash Tables的视频。 Hash函数最简单设计是通过对质数取余的方式进行,但是这涉及到取余运算,并不是一个高效算法。然后视频讲师又提供了另外一个hash函数(《算法导论》中并没有,这里就不给出了),采用乘法和位运算来提高效率。 在Java编程中,如果使用Java API下的Hash数据结构HashTable和HashMap来存储key-va原创 2016-07-24 21:17:52 · 1573 阅读 · 0 评论 -
【算法导论学习-31】分治法解决同一个数连乘问题
同一个数连乘问题今天再看网易公开课上的算法导论,其中提到了这个pow(double x,int n)可以采用分治法。这里实现一下: /** * 分治法求解pow(double x,int n) * 参考:*http://blog.csdn.net/u012162613/article/details/41361655 * * */ public原创 2016-07-10 21:12:46 · 1250 阅读 · 0 评论 -
树状数组Binary Indexed Trees详解与Java实现
WiKi树状数组是由Peter Fenwick在1994年提出的,所以又称为Fenwick Tree。数组的区间求和的复杂度是O(n),树状数组可以将数组区间求和的复杂度降低到O(lg n)。这对于长数组的高频率区间求和的应用场景来讲,可以提高效率。参考树状数组(Binary Indexed Trees) 搞懂树状数组详解这里从上面的参考中总结我的思路。 树状数组通过树形结构对原始数组进行预处理原创 2016-07-09 22:16:31 · 4285 阅读 · 1 评论 -
【算法导论学习-29】动态规划经典问题02:最长公共子序列问题(Longest common subsequence,LCS)
《算法导论中》动态规划经典问题——最长公共子序列问题(Longest common subsequence,LCS)的java实现原创 2014-09-03 21:42:19 · 2142 阅读 · 0 评论 -
【算法导论-010】快速排序(quickSort)
1、算法思想《算法导论》170页第7章QuickSort2、java实现算法导论171页伪码原创 2014-08-10 15:42:09 · 1449 阅读 · 0 评论 -
A、B两个整数集合的交集
两个整数集合的交集原创 2014-08-16 13:00:11 · 2884 阅读 · 0 评论 -
【算法导论学习-27】动态规划经典问题01:钢条切割的最大收益
《算法导论》中一个经典的动态规划问题,钢条切割的最大收益原创 2014-09-02 18:20:06 · 2515 阅读 · 0 评论 -
【算法导论学习-008】算法时间复杂度的计算
1、主方法(The master throrem)【算法导论】 P942、数学归纳法(mathematical induction)【算法导论】 P83如果不满足主方法(The master throrem)的形式结构,可以用归纳法进行证明。3、递归树方法【算法导论】 P88递归树方法基本要主方法(The master thror原创 2014-08-08 11:29:38 · 2838 阅读 · 0 评论 -
【算法导论-006】冒泡排序及其优化(BubbleSort)
1、问题来源【算法导论】P40 2-22、java实现参考:http://blog.csdn.net/wdzxl198/article/details/8896447原创 2014-08-06 21:34:03 · 825 阅读 · 0 评论 -
【算法导论学习-001】插入排序(InsertionSort)
参考文献:《算法导论》中、英版本网易公开课:http://v.163.com/movie/2010/12/G/F/M6UTT5U0I_M6V2T1JGF.html伪代码参考:《算法导论》P18页 //** * 创建时间:2014年7月30日 下午9:51:41 * 项目名称:Test * @since JDK 1.6.0_21 * 类说明: *...原创 2014-07-31 21:24:49 · 1021 阅读 · 0 评论 -
【算法导论学习-004】二分搜索(BinarySearch)
《算法导论》P392.3.5 二分搜索问题 参考:java Arrays.binarySearch的源码 public static int binarySearch(char[] array, int startIndex, int endIndex, char value) { checkBinarySearchBounds(startIndex, endIndex原创 2014-08-05 21:04:31 · 845 阅读 · 0 评论 -
【算法导论学习-005】整数集合S中是否存在两个数等于给定的一个整数
《算法导论》39Describe a Θ(n lg n)-time algorithm that, given a set S of n integers and another integer x, determines whether or not there exist two elements in S whose sum is exactly x.原创 2014-08-05 21:17:44 · 1657 阅读 · 0 评论 -
【算法导论学习-017】k分位数(the Kth quantiles)
参考:http://www.cnblogs.com/goagent/archive/2012/12/11/2813900.html原创 2014-08-18 18:01:56 · 4937 阅读 · 0 评论 -
【算法导论学习-003】选择排序(SelectionSort)
参考文献:《算法导论》中、英版本网易公开课:http://v.163.com/movie/2010/12/G/F/M6UTT5U0I_M6V2T1JGF.html伪代码参考:《算法导论》P29页原创 2014-08-05 20:30:31 · 906 阅读 · 0 评论 -
【算法导论学习-009】仅使用Random(0,1)实现Random(a,b)
《算法导论》P117课后题5.1-2 Describe an implementation of the procedure Random(a, b) that only makes calls to Random(0,1). What is the expected running time of your procedure, as a function of a and b? The原创 2014-08-10 15:34:58 · 1392 阅读 · 0 评论 -
【算法导论学习-17】stack的数组实现
参考:http://blog.csdn.net/jdhanhua/article/details/6598582原创 2014-08-22 22:02:06 · 729 阅读 · 0 评论 -
【算法导论学习-30】 二叉树专题5:二叉树类型的判断
完全二叉树、平衡二叉树、二叉搜索树的判断原创 2014-09-07 12:02:22 · 1359 阅读 · 0 评论 -
【算法导论学习-23】两个单链表(single linked)求交点
单链表的交点计算原创 2014-08-27 10:45:16 · 1341 阅读 · 0 评论 -
【算法导论学习-20】单链表(single linked)的实现
参考:http://www.jb51.net/article/48164.htm1、节点类的实现public class Node { // 节点类 E data; // 节点上的数据 Node next; // 指向下一个节点 Node(E e) { data = e; next = null; }}关于节点类的说明原创 2014-08-23 20:47:54 · 775 阅读 · 0 评论 -
【算法导论学习-011】数组中的逆序对个数(Counting inversions in an array)
1、问题来源《算法导论》P41思考题2-4:Let A[1..n] be an array of n distinct numbers. (i, j) is called an inversion of A if i A[j]. 2、解决方案参考1:http://www.geeksforgeeks.org/counting-inversions/讨论区:http:原创 2014-08-10 17:17:27 · 2135 阅读 · 0 评论 -
【算法导论学习-012】n个数随机等概率的抽样m个
n个数随机等概率的抽样m个,提供了4种方案的算法。原创 2014-08-13 15:53:48 · 3859 阅读 · 0 评论 -
【算法导论学习-22】二叉树专题1:一般二叉树的实现和常用处理函数
java实现一般二叉树以及二叉树的遍历、常用处理函数等原创 2014-08-25 17:52:33 · 1395 阅读 · 0 评论 -
【算法导论学习-21】单链表(single linked)的反转
两个辅助空间实现单链表的反转原创 2014-08-23 20:55:49 · 1146 阅读 · 0 评论 -
【算法导论学习-19】1个stack实现queue
1个stack实现queue原创 2014-08-23 18:52:14 · 1013 阅读 · 0 评论 -
【算法导论学习-18】queue的数组实现
参考:http://zengzhaoshuai.iteye.com/blog/1171716这里指的是循环队列。先写一个原创 2014-08-23 18:34:29 · 678 阅读 · 0 评论