摘要: 1.基本思想我们将学习一种能够将链表插入的灵活性和有序数组查找的高效性结合起来的符号表实现。具体来说,就是使用每个结点含有两个链接(链表中每个结点只含有一个链接)的二叉查找树来高效地实现符号表,这也是计算机科学中最重要的算法之一。定义:一棵二叉查找树(BST)是一棵二叉树,其中每个结点都含有一个Co... 阅读全文
posted @ 2015-12-01 17:42 是非猫 阅读(1109) 评论(0) 推荐(0) 编辑
摘要: 程序对so文件加壳后,如何验证是否加壳成功呢,首先除了能在应用中正常运行外,还要用IDA来检测:绿色乱码表示rr这个函数成功加密:工具下载,可支持动态调试版: 阅读全文
posted @ 2015-11-30 17:41 是非猫 阅读(1775) 评论(0) 推荐(0) 编辑
摘要: 1.具体算法/** * 算法3.2 二分查找(基于有序数组) * Created by huazhou on 2015/11/29. */public class BinarySearchST, Value> { private Key[] keys; private Value[] v... 阅读全文
posted @ 2015-11-29 17:37 是非猫 阅读(2106) 评论(0) 推荐(1) 编辑
摘要: 1.基本思想符号表中使用的数据结构的一个简单选择是链表,每个结点存储一个键值对,如算法中的代码所示。get()的实现即为遍历链表,用equals()方法比较需被查找的键和每个结点中的键。如果匹配成功我们就返回相应的值,否则我们返回null。put()的实现也是遍历链表,用equals()方法比较需被... 阅读全文
posted @ 2015-11-29 12:17 是非猫 阅读(3017) 评论(0) 推荐(0) 编辑
摘要: 定义:符号表是一种存储键值对的数据结构,支持两种操作:插入(put),即将一组新的键值对存入表中;查找(get),即根据给定的键得到相应的值。1.有序符号表2.成本模型查找的成本模型:在学习符号表的实现时,我们会统计比较的次数(等价性测试或是键的相互比较)。在内循环不进行比较(极少)的情况下,我们会... 阅读全文
posted @ 2015-11-29 11:30 是非猫 阅读(1157) 评论(0) 推荐(0) 编辑
摘要: 阅读全文
posted @ 2015-11-27 15:43 是非猫 阅读(215) 评论(0) 推荐(0) 编辑
摘要: 这里介绍离散数学中两个重要的函数,即底函数和顶函数。令x为实数。底函数把x下舍入到小于或等于x又最接近x的整数,而顶函数则把x上舍入到大于或等于x又最接近x的整数。在统计对象个数时常使用这两个函数。在分析解一定规模的问题的计算机过程使用的步数时,这两个函数起着重要的作用。定义:底函数指派给实数x的是... 阅读全文
posted @ 2015-11-24 17:37 是非猫 阅读(3501) 评论(0) 推荐(0) 编辑
摘要: 我们可以把任意优先队列变成一种排序方法。将所有元素插入一个查找最小元素的优先队列,然后再重复调用删除最小元素的操作来将它们按顺序删去。用无序数组实现的优先队列这么做相当于进行一次插入排序。用基于堆的优先队列这样做等同于哪种排序?一种全新的排序方法!下面我们就用堆来实现一种经典而优雅的排序算法——堆排... 阅读全文
posted @ 2015-11-23 12:34 是非猫 阅读(745) 评论(0) 推荐(0) 编辑
摘要: 1.具体算法public class MaxPQ implements Iterable { private Key[] pq; //基于堆的完全二叉树 private int N; // 存储于pq[1.... 阅读全文
posted @ 2015-11-23 11:23 是非猫 阅读(919) 评论(0) 推荐(0) 编辑
摘要: 实现栈或是队列与实现优先队列的最大不同在于对性能的要求。对于栈和队列,我们的实现能够在常数时间内完成所有操作;而对于优先队列,插入元素和删除最大元素这两个操作之一在最坏情况下需要线性时间来完成。我们接下来要讨论的基于数据结构堆的实现能够保证这两种操作都能更快地执行。1.堆的定义数据结构二叉堆能够很好... 阅读全文
posted @ 2015-11-22 21:03 是非猫 阅读(1400) 评论(0) 推荐(0) 编辑
摘要: 许多应用程序都需要处理有序的元素,但不一定要求它们全部有序,或是不一定要一次就将它们排序。很多情况下我们会收集一些元素,处理当前键值最大的元素,然后再收集更多的元素,再处理当前键值最大的元素,如此这般。在这种情况下,一个合适的数据结构应该支持两种操作:删除最大元素和插入元素。这种数据类型叫做优先队列... 阅读全文
posted @ 2015-11-22 15:16 是非猫 阅读(1290) 评论(0) 推荐(0) 编辑
摘要: 快速排序可能是应用最广泛的排序算法了。流行的原因是它实现简单、适用于各种不同的输入数据且在一般应用中比其他排序算法都要快得多。快速排序引人注目的特点包括它是原地排序(只需要一个很小的辅助栈),且将长度为N的数组排序所需的时间和NlgN成正比。我们已经学习过的排序算法都无法将这两个优点结合起来。另外,... 阅读全文
posted @ 2015-11-21 16:56 是非猫 阅读(10771) 评论(0) 推荐(0) 编辑
摘要: 1.对小规模子数组使用插入排序用不同的方法处理小规模问题能改进大多数递归算法的性能,因为递归会使小规模问题中方法的调用过于频繁,所以改进对它们的处理方法就能改进整个算法。对排序来说,我们已经知道插入排序(或者选择排序)非常简单,因此很可能在小数组上比归并排序更快。和之前一样,一幅可视轨迹图能够很好地... 阅读全文
posted @ 2015-11-21 01:32 是非猫 阅读(1789) 评论(0) 推荐(0) 编辑
摘要: 1.基本思想将两个有序的数组归并成一个更大的有序数组,很快人们就根据这个操作发明了一种简单的递归排序算法:归并排序。要将一个数组排序,可以先(递归地)将它分成两半分别排序,然后将结果归并起来。你将会看到,归并排序最吸引人的性质是它能够保证将任意长度为N的数组排序所需时间和NlogN成正比;它的主要缺... 阅读全文
posted @ 2015-11-18 17:57 是非猫 阅读(1675) 评论(0) 推荐(0) 编辑
摘要: 以下内容为原创,欢迎转载,转载请注明来自博客园:http://www.cnblogs.com/joey-hua/p/4971380.html1.劫持https接口很多android客户端虽然使用了https,但还是能被第三方抓包工具如fiddler劫持,因为他们的代码使用了诸如ALLOW_ALL_H... 阅读全文
posted @ 2015-11-17 12:42 是非猫 阅读(3857) 评论(0) 推荐(0) 编辑