- 博客(5)
- 收藏
- 关注
原创 《算法4》散列表
散列表也是一种符号表,主要特征是可以将键通过散列函数映射为一个数组索引,然后利用这个数组索引就可以做很多东西。散列函数当我们输入一个对象,不论这是个什么东西,经过散列函数处理之后输出一个0到M-1的范围之内的整数。 对于散列函数有一些要求: 1. 相等的对象(使用equals()函数)的散列值是相同的 2.同样的散列值不同的两个对象不相等 3.在输出范围之内尽量均匀分布但是哈希函数是和
2017-10-30 22:53:18 769
原创 《算法4》深入理解红黑树
红黑树是一种性能非常优秀的数据结构,关键在于它能保证最坏的性能也是对数的,主要是因为它是一种平衡的树,所以也叫平衡查找树。要理解红黑树,最好先看看我的上一篇博客《算法4》符号表以及二叉查找树,了解二叉查找树以及我们为什么需要平衡查找树。2-3查找树二叉查找树中树高会受到输入数据的影响,极端情况下一棵树和一个链表没什么区别,所以我们需要一种树,它的所有叶节点到根节点的距离都是相等的,这种树为平衡树,并
2017-10-28 11:52:39 7746 13
原创 《算法4》符号表以及二叉查找树
符号表符号表就是键值对的集合,并且支持put和get操作。现实中符号表的应用非常广泛,所以这里介绍几种键值对的实现,主要是二叉查找树以及之后将要介绍的红黑树。一个值得注意的点就是,符号表里面不允许重复的key,也就是put一个键值对时,会先查找符号表里面是否含有这个key,有的话就更改这个key对应的值,没有的话就新加一个键值对两种简单实现:(1)使用无序链表的顺序查找我们维护一个无序链表,当我们查
2017-10-21 21:44:06 1421
原创 《算法4》优先队列和堆排序
优先队列和堆优先队列支持两种操作:删除最大元素和插入元素。可以用有序或者无序数组完成这个数据结构,但是用二叉堆(以下简称堆)可以更加快速地完成元素的删除和插入。堆的插入和删除元素的最大数量级都是logNlogN堆的定义:堆就是一个每个节点都大于它的子节点的二叉树,也叫最大优先队列。堆的第一个元素可以是最大的或者是最小的,前者称为最大优先队列,后者是最小优先队列,这里我们讨论最大优先队列,对于最小优先
2017-10-12 22:14:33 500
原创 《算法4》排序算法总结
最近在学算法,就以排序算法的总结作为第一篇博客选择排序插入排序希尔排序归并排序快速排序三向切分快速排序总结选择排序选择排序的思路很简单 ,不断遍历整个数组,将未排序数组中最小的数放到左边,直到整个数组排序完成。选择排序速度较慢,每次都必须遍历整个数组未排序的部分,所以总的比较次数为 C(N)=N+(N−1)+⋯+1∼N22C(N)=N+(N-1)+\cdots+1 \sim \frac
2017-10-04 13:43:25 396 1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人