![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构与算法
kgr957
这个作者很懒,什么都没留下…
展开
-
简单_单链表
[code="java"]package sunfa;import java.util.Iterator;/** * 单链表 * * @author Administrator * */public class SingleLinkedList { public static void main(String[] args) { Singl...原创 2011-09-11 10:49:11 · 77 阅读 · 0 评论 -
简单_Trie树与三叉Trie树
[code="java"]package sunfa.tree;import java.util.HashMap;import java.util.Iterator;import java.util.Map;/** * 参考:http://book.51cto.com/art/201106/269044.htm * Trie树,又称单词查找树或键树,是一种树形结...原创 2011-10-20 21:10:13 · 357 阅读 · 0 评论 -
简单_伸展树(Splay tree)
如果你注意观察你会发现,输入法就打某个字,如果你下次还打那个字,那么它的位置将在它上一次位置的前面,如果你一直打某个字,那么它每次都往前移动一格或多格。所以不同的人使用搜狗输入法啊、紫光啊、QQ输入法啊都觉得好使,因为它会根据每个人的不同习惯把你经常打的字弄到靠近前面。输入法也是要求查询效率的,所以输入法其实也是btree,但是为了更加的智能它使用了另一种树结构-----------伸展树...2011-10-21 21:00:55 · 130 阅读 · 0 评论 -
关于Swing打印二叉树
[img][/img]最近研究二叉树一类的树结构,总用调试的办法去搞好麻烦,想用界面显示树结构,想看是不是AVL啊,(红黑树那个还在弄,太麻烦),于是就想弄出界面来,考虑了下准备用flex做也网页图形的,毕竟研究过用flex绘图等简单的东西,又想想swing这东西还一直没弄过呢,学java的不会swing惭愧啊,就是今天给按钮加个点击事件都纠结了半天。。。。唉 性格所致 ,越是不会的东西越要去折腾...2011-10-21 21:52:12 · 232 阅读 · 0 评论 -
关于递归和尾递归的原理
[b][color=red]基础很重要,这是永远不变的真理。[/color][/b][code="java"]package sunfa;public class DiGui { public static void main(String[] args) { Stack stack = new Stack(5); for (int i = 0; i < 5; ...2011-10-25 21:05:11 · 141 阅读 · 0 评论 -
简单_随机平衡二叉树(Treap)
我们可以看到,如果一个二叉排序树节点插入的顺序是随机的,这样我们得到的二叉排序树大多数情况下是平衡的,即使存在一些极端情况,但是这种情况发生的概率很小,所以我们可以这样建立一颗二叉排序树,而不必要像AVL那样旋转,可以证明随机顺序建立的二叉排序树在期望高度是,但是某些时候我们并不能得知所有的带插入节点,打乱以后再插入。所以我们需要一种规则来实现这种想法,并且不必要所有节点。也就是说节点是顺序输入的...2011-10-25 21:19:23 · 382 阅读 · 0 评论 -
由HashMap的实现联想到的
首先温故一下java.util.HashMap的实现[code="java"]int i = indexFor(hash, table.length);[/code][code="java"]static int indexFor(int h, int length) { return h & (length-1);}[/code]原理:java中的HashM...2011-10-25 21:42:05 · 122 阅读 · 0 评论 -
简单_分治算法
[b]分治算法,多么简单的思想!可是它无处不在。btree,b+树中都有它的身影![/b][size=large]1、分治算法:[/size]分治算法的基本思想是将一个规模为N的问题分解为K个规模较小的子问题,这些子问题相互独立且与原问题性质相同。求出子问题的解,就可得到原问题的解。[size=large]2、二分法:[/size]利用分治策略求解时,所需时间取决于分解后子问题的个...2011-10-29 19:44:40 · 102 阅读 · 0 评论 -
<转>李开复:算法的力量
[size=small]算法是计算机科学领域最重要的基石之一,但却受到了国内一些程序员的冷落。许多学生看到一些公司在招聘时要求的编程语言五花八门,就产生了一种误解,认为 学计算机就是学各种编程语言,或者认为,学习最新的语言、技术、标准就是最好的铺路方法。其实,大家被这些公司误导了。编程语言虽然该学,但是学习计算机 算法和理论更重要,因为计算机语言和开发平台日新月异,但万变不离其宗的是那些算法和理论...原创 2011-11-04 19:17:58 · 103 阅读 · 0 评论 -
简单_快速选择算法(RANDOMIZED-SELECT)
[code="java"]package sunfa.midNum;import java.util.Arrays;import java.util.Comparator;import java.util.Random;/** * * 参考:--------------------------------------------- * http://blo...2011-10-19 23:32:35 · 337 阅读 · 0 评论 -
字符匹配算法(KMP)
[code="java"]package sunfa.kmp;/** * 朴素字符串匹配算法 */public class SimpleKMP { public static void main(String[] args) { int index = simpleKmp("12444abababab", "444ababab"); System.out.p...原创 2011-10-18 22:15:59 · 72 阅读 · 0 评论 -
简单_堆排序算法
[code="java"]package sunfa.sort;import java.util.Arrays;import java.util.Comparator;import java.util.Random;public class HeapSort { public static void main(String[] args) { int n = ...原创 2011-10-18 16:19:25 · 61 阅读 · 0 评论 -
简单_基本二叉树(BST)
[code="java"]package sunfa.tree;import java.util.ArrayList;import java.util.Comparator;import java.util.LinkedList;import java.util.List;import java.util.Random;/** * 基本的BST(二叉树)...原创 2011-09-11 10:52:03 · 96 阅读 · 0 评论 -
简单_二分法算法
[code="java"]package sunfa;//二分法查找public class TestBinSearch { public static void main(String[] args) { /** * 集合必须是排序好的,否则查不到。有多个相同的元素则只返回首先被找到的那一个。 * 参考:java.util.Arrays.binarySe...原创 2011-09-11 10:53:51 · 101 阅读 · 0 评论 -
简单_快速排序
[code="java"]/** 快速排序方法 */ public static void quickSort(int[] a, int lo0, int hi0) { int lo = lo0; int hi = hi0; if (lo >= hi) return; // 确定指针方向的逻辑变量 boolean transfer = true...原创 2011-09-19 23:20:16 · 81 阅读 · 0 评论 -
图解双链表
[b][size=small]以java.util.LinkedList源码结合本人用XP自带的简陋的画图程序分析链表成链的过程如下:[/size][/b]1、一个空的双链表其实是个环形的链,如下图:[img]http://dl.iteye.com/upload/attachment/561580/6ad9073b-0d41-3381-9c63-a96c7d8094e7.jpg[/im...2011-09-28 10:48:12 · 137 阅读 · 0 评论 -
BloomFilter(布隆过滤器)
[code="java"]package sunfa;import java.util.BitSet;import java.util.Random;/** * BloomFilter(布隆过滤器) * http://www.cnblogs.com/allensun/archive/2011/02/16/1956532.html * */public ...原创 2011-10-11 19:30:36 · 76 阅读 · 0 评论 -
关于:一道腾讯面试题:从大量数字中取出top100
一道腾讯面试题:从大量数字中取出top100http://www.iteye.com/topic/628707虽然题目并不难,但看到许多的人回复了,当然有回复的水平高的也有低的反正各种回复千奇百怪。能想到用二叉树或堆来做的算想对思路了,用多线程部分排序的感觉至少思路上就差得远了。有个兄弟第一时间用TreeSet给出了代码,当然代码很简单,如下:[code="java"]pa...2011-10-14 23:51:01 · 544 阅读 · 0 评论 -
简单_二叉堆
堆是一种比较有用的数据结构,是二叉树的一种数组的表示形式。最大堆和最小堆是二叉堆的两种形式。 最大堆:根结点的键值是所有堆结点键值中最大者。 最小堆:根结点的键值是所有堆结点键值中最小者。 而最大-最小堆集结了最大堆和最小堆的优点,这也是其名字的由来。 最大-最小堆是最大层和最小层交替出现的二叉树,即最大层结点的儿子属于最小层,最小层结点的儿子属于最大层。 以...2011-10-16 13:40:33 · 87 阅读 · 0 评论 -
简单_插入排序(Insertion-sort)
[code="java"]package sunfa.sort;import java.util.Arrays;import java.util.Random;public class InsertionSort { public static void main(String[] args) { Random ran = new Random(); int...原创 2011-10-18 10:48:07 · 102 阅读 · 0 评论 -
答复: 百度一面算法题(常数时间内求栈中最大值)
yeshaoting 写道 算法描述:一个栈stack,具有push和pop操作,其时间复杂度皆为O(1)。设计算法max操作,求栈中的最大值,该操作的时间复杂度也要求为O(1)。可以修改栈的存储方式,push,pop的操作,但是要保证O(1)的时间复杂度,空间时间复杂度无要求。思路:我借助一个变量count和一个数组空间(其实就是一个栈)完成该...原创 2011-11-04 23:36:41 · 260 阅读 · 0 评论