数据结构与算法
未读
5.0 树(Tree)
5.0 树(Tree) 一. 定义 树是n(n>=0)个结点的有限集。当n = 0时,称为空树。在任意一棵非空树中应满足: 有且仅有一个特定的称为根的结点。 当n>1时,其余节点可分为m(m>0)个互不相交的有限集T1,T2,…,Tm,其中每个集合本身又是一棵树,并且称为根的子树
数据结构与算法
未读
4. 哈希表(Hash Table)
4. 哈希表(Hash Table) 一. 定义 散列表(Hash table,也叫哈希表),是根据键(Key)而直接访问在内存存储位置的数据结构。也就是说,它通过计算一个关于键值的函数,将所需查询的数据映射到表中一个位置来访问记录,这加快了查找速度。这个映射函数称做散列函数,存放记录的数组称做散列
数据结构与算法
未读
5.2 哈夫曼树(Huffman Tree)
5.2 哈夫曼树(Huffman Tree) 一. 定义 给定n个权值作为n个叶子结点,构造一棵二叉树,若该树的带权路径长度(wpl)达到最小,称这样的二叉树为最优二叉树,也称为哈夫曼树(Huffman Tree)。哈夫曼树是带权路径长度最短的树,权值较大的结点离根结点较近。 路径:在一棵树中,从一
数据结构与算法
未读
5.3二叉排序树(Binary Sort Tree)
5.3 二叉排序树(Binary Sort Tree) 使用数组: 数组未排序, 优点:直接在数组尾添加,速度快。 缺点:查找速度慢。 数组排序,优点:可以使用二分查找,查找速度快,缺点:为了保证数组有序,在添加新数据时,找到插入位置后,后面的数据需整体移动,速度慢。 使用链式存储 : 链表不管链表
数据结构与算法
未读
5.4 平衡二叉树(balanced binary tree)
5.4 平衡二叉树(balanced binary tree) 例:一个二叉排序树,它的左子树全部为空,从形式上看,更像一个单链表。插入速度没有影响,但查询速度明显降低 (因为需要依次比较), 不能发挥BST的优势,因为每次还需要比较左子树,其查询速度比单链表还慢。 解决办法:将二叉排序树转平衡二叉
数据结构与算法
未读
5.5 多路查找树(Muitl-Way Search Tree)
5.5 多路查找树(Muitl-Way Search Tree) 二叉树的操作效率较高,但是也存在问题: 二叉树处理的数据需要加载到内存的,如果二叉树的节点少,则问题不大,但是如果二叉树的节点很多(比如1亿), 就存在如下问题 在构建二叉树时,需要多次进行io操作(海量数据存在数据库或文件中),节点
数据结构与算法
未读
7.1 二分查找算法(非递归)
7.1 二分查找算法(非递归) 一 . 二分查找算法 二分查找法只适用于从有序的数列中进行查找(比如数字和字母等),将数列排序后再进行查找 二分查找法的运行时间为对数时间O(㏒₂n) ,即查找到需要的目标位置最多只需要㏒₂n步,假设从[0,99]的队列(100个数,即n=100)中寻到目标数30,则