
数据结构
杨斌_HUST
Greatness can be prepared.
展开
-
排序(二)快速排序
1 基本思想 排序的基本操作是比较2个数,比如a和b,比较结果只有2种排序情况ab或ba。从比较结果来看(逆向思维),比较结果将空间分为2份,如果每次比较都能完美地二分,即二分后两边的概率是相等(即二分后左右两边处于一个平衡状态),那么对于n个数,每个数找到自己的位置,最终需要的步骤是log(n!)=O(nlogn). 快速排序就是采用这样的思想,每次都二分整个要排序转载 2013-12-27 13:20:44 · 309 阅读 · 0 评论 -
数据结构与算法 java语言
专栏: http://blog.youkuaiyun.com/column/details/zhonghua.html转载 2013-12-27 13:11:47 · 238 阅读 · 0 评论 -
数据结构之链表(一)单链表
目录 一、常用的4类基本结构 二、单向链表(SimpleLinked List) 1、定义Definition 2、实现Implement with Java language 3、效率Efficiency 一、常用的4类基本结构 数据结构(Data Structure)是指相互之间存在一种或多种特定关系的数据元素的集合,这种数据元素(data element)转载 2013-12-29 23:09:42 · 284 阅读 · 0 评论 -
数据结构的java源码实现
最近,想了解下数据结构的源码实现,在网上找到了部分共享的java源程序。 链接:http://www.verysource.com/49252-5-185486.html原创 2014-01-09 13:08:35 · 281 阅读 · 0 评论 -
数据结构之树(五)
树:是一种递归定义的数据结构。树( Tree )是树结构的简称,它是一种重要的非线性数据结构。 树或者是一个空树,即不含有任何的结点(元素),或者是一个非空树,即至少含有一个结点。 根:在一棵非空树中,它有且仅有一个节点。 子树:在一棵非空树中,除根外其余所有结点分属于 m 个( m ≥ 0 )不相交的集合。每个集合又 构成一棵树,称为根结点的 子树。 树转载 2014-01-08 23:25:19 · 307 阅读 · 0 评论 -
数据结构之树(四)二叉树
1 二叉树的深度 【定义】结点的层次从根开始定义,根为第一层,树中结点的最大层次为树的深度或高度。 【思路】如果一棵树只有一个结点,它的深度为1。如果根结点只有左子树而没有右子树,那么树的深度应该是其左子树的深度加1;同样如果根结点只有右子树而没有左子树,那么树的深度应该是其右子树的深度加1。如果既有右子树又有左子树呢?那该树的深度就是其左、右子树深度的较大值再加1。 public in转载 2014-01-08 22:48:31 · 216 阅读 · 0 评论 -
数据结构之树(二)二叉树
在计算机科学 中,二叉树 是每个节点最多有两个子树 的有序树 。通常子树被称作“左子树”(left subtree )和“右子树”(right subtree )。二叉树常被用于实现二叉查找树 和二叉堆 。 二叉树的每个结点至多只有二棵子树(不存在度大于2的结点),二叉树的子树有左右之分,次序不能颠倒。二叉树的第i层至多有2i − 1 个结点;深度为k的二叉树至多有2k − 1转载 2014-01-08 21:28:00 · 230 阅读 · 0 评论 -
数据结构之树(一)二叉树
1 Tree's Advantage Why might you want to use a tree? Usually, because it combines the advantage of two other structures: an ordered array and a linked list. You can search a tree quickly like转载 2014-01-08 21:13:40 · 296 阅读 · 0 评论 -
数据结构之树
树 树的定义:树是n(n>0)个结点的有穷集合。 (1) 有且仅有一个称为根的结点; (2) 其余结点分为m(m>=0)个互不相交的非空集合T1,T2…Tm,这些集合中的每一个都是一棵树,称为根的子树。 在树上,根结点没有直接前趋。 树形结构的术语及其含义: (1) 度:树上任一结点所拥有的子树的数目称为该结点的度。 (2) 叶子或终端结点:度为0的结点。转载 2014-01-08 21:22:38 · 246 阅读 · 0 评论 -
数据结构之链表(二)双端链表
一、Definition Adouble-ended list(双端链表) is similar to a simple linked list,but it has an additional feature:a reference to the last link as well as to thefirst. It can discribe as the following pic转载 2013-12-29 23:11:33 · 302 阅读 · 0 评论 -
数据结构之树(三)二叉树
package com.jimmy.impl; import java.util.Stack; import com.jimmy.BinaryTreeInterface; public class Binarytree implements BinaryTreeInterface { private BinaryNode root; // 只要一个数据节点就够了 // 构造空树转载 2014-01-08 21:41:33 · 229 阅读 · 0 评论 -
划分算法与TopK问题
1 划分算法思想 划分(partition)就是将数据项分成两组,一组大于某个特定的数据项,而另一组小于某个特定的数据项。在划分算法中,这个特定的数据项叫做枢纽(pivot)。 划分算法的思想是中间线代表枢纽;数据项的左端和右端分别有两个指针(leftPtr和rightPtr); leftPtr从左向右遍历元素,rightPtr从右向左遍历元素,当leftPtr遇到比枢纽元素大的元素时停转载 2013-12-29 23:07:18 · 294 阅读 · 0 评论 -
排序(一):简单排序
今天重新看数据结构与算法,对其有了新的认识。首先什么是数据结构呢?什么是数据结构研究的对象呢?下面引用几个概念,希望有助于对数据结构的理解。A data structureis an arrangement of data in a computer’s memory (or sometimes on a disk). Datastructures include arrays, linked l转载 2013-12-27 13:17:15 · 360 阅读 · 0 评论 -
排序(三)希尔排序shellsort
基本思想:先将整个待排元素序列分割成若干个子序列(由相隔某个“增量”的元素组成的)分别进行直接插入排序,然后依次缩减增量再进行排序,待整个序列中的元素基本有序(增量足够小)时,再对全体元素进行一次直接插入排序。因为直接插入排序在元素基本有序的情况下(接近最好情况),效率是很高的,因此希尔排序在时间效率上比前两种方法有较大提高。 假如步长为4,排序过程可以看成(0,4,8)(1,5,9)(2,转载 2013-12-27 13:22:47 · 309 阅读 · 0 评论 -
二分查找算法
1 定义 折半查找算法也称二分查找算法或折半搜索算法,是一种在有序数组(即前提必须是数组是已经排好序的)中查找某一特定元素的搜索算法。搜素过程是 1)计算中间元素mid 从数组的中间元素开始,如果中间元素正好是要查找的元素,则搜素过程结束; 2)比较左边元素left, 比较右边元素right 如果某一特定元素大于或者小于中间元素,则在数组大于或小于中间元素的那一半中查找,而转载 2013-12-27 13:25:36 · 334 阅读 · 0 评论