数据结构
华都烟梦
这个作者很懒,什么都没留下…
展开
-
详解哈希表(散列表)
昨天看了哈希表,起先一直在看哈希表的实现,看的有点头大。于是硬着头皮反复看了几遍,终于看懂了一些眉目。现在做下记录 首先,为什么要有哈希表?为什么,这很重要,凡是存在的都应该有其存在的理由。就像我的另外一篇博客中说的Java中为什么要有接口一样。这里,假设我们有一个很大的数组(如一个学生考试系统中的学生成绩),我们可以很方便的根据数据元素的下标定位到该元素。但是如果现在要原创 2013-09-18 08:34:00 · 1122 阅读 · 0 评论 -
数据结构基础_栈和队列
来聊聊栈和队列,和数组比较栈和队列有插入数据迅速的优势,但是在查找数据时就没有数组来的快了。下面的代码实现了用数组实现栈,用链表实现队列以及用链表实现栈。 用数组实现栈 package StackAndQueue; /** * 使用数组实现栈 * @author wly * @author 2013-10-23 */ public class ArrayStack原创 2013-11-03 19:50:28 · 1463 阅读 · 0 评论 -
数据结构_树结构
数据结构中的树,集成了数组中查找迅速和链表添删迅速的特性。原创 2013-12-05 13:08:47 · 1152 阅读 · 0 评论 -
数据结构_图(Graph)
图(Graph)是为了模拟解决一类现实中的问题的而设计的数据结构,个人觉得相对于二叉搜索树,它并没有什么算法操作的的优势,只是它可以很好的模拟显示中的图问题。图的表示可以用邻接矩阵和邻接表来表示,本文就使用邻接矩阵的方法实现了一下简单的无向图。原创 2013-12-06 09:55:10 · 2266 阅读 · 0 评论 -
数据结构_使用二叉堆实现优先队列
本文将先简单的介绍一下二叉堆,然后再使用二叉堆实现优先队列。 1、二叉堆实际上就是一种完全二叉树,即除了树的最后一层节点不需要是满的,其他的每一层从左到右都是完全满的。 2、常见的二叉堆有最大堆和最小堆,区别在于根节点是树中的最大值还是最小值。 3、在使用二叉堆实现的优先队列中进行数据的插入、删除的时间复杂度为O(logN)。 4、堆是弱序的,或者说堆是基本无序的。因为不像二叉搜索树一样中节点的右子节点都大于左子结点,在堆中只需要满足从根节点到任意个页节点的路径是单调递增或单调递减的即可。这意味着,堆不能很原创 2013-12-10 21:11:29 · 5015 阅读 · 1 评论 -
数据结构_链表实现无限循环的"环"结构/循环队列
简单的数据结构应用,因为在另外一篇博客中用到,这里就单独领出来。使用链表实现了"环"结构,用以模拟Android的广告栏组件中图片的无限滚动实体类。代码如下: package com.wly.algorithmbase.datastructure; /** * 链表实现无限循环的"环",结构从左(head)到右(tail) * @author wly * @param 实体类 */ c原创 2013-12-13 15:00:16 · 2458 阅读 · 0 评论 -
数据结构_红黑树
今年的第一篇博客,距离上一篇博客竟然已经一个月了。最近都静不下心来学习 ,一则刚过完年,二则刚换工作。好了,不扯了,转入正题吧。 今天讨论的是红黑树,红黑树有一个特点:保证了树结构是基本平衡的(即没有一条路径会比其他路径长出两倍)。除了这个特点之外,红黑树和一般的二叉搜索树差距不大。 问题是怎样在不断的进行插入、删除等动态操作时,保持树的基本平衡呢?从直觉上可以推测出只有红黑树的根节点在插入、删除节点的过程中不断改变才可能实现树的高度平衡,事实上也的确如此。这一点是和普通二叉树原创 2014-02-25 19:09:21 · 1123 阅读 · 0 评论