数据结构+算法
文章平均质量分 80
我就是王大大
这个作者很懒,什么都没留下…
展开
-
二叉树遍历
二叉树是一棵树,其中每个节点不多于两个儿子。二叉树是有顺序的,左孩子的值小于根节点的值小于右孩子的值,次序 不能改变。正因为这个特点才可以方便快捷的查找。 class BinaryNode{ Object element; //节点值 BinaryNode left; //左孩子 BinaryNode right; //右孩子 } 对于二叉树的定义如上。 二叉树遍历通常有原创 2016-08-29 09:57:38 · 472 阅读 · 0 评论 -
数据结构之队列
队列是另一种顺序存取的线性表,他不同于栈,是先进先出的,就像排队一样,先来的先走。他的插入是在队列的对尾实现,删除是在对头实现 队列的存储表示有两种,基于数组的和基于链表的 顺序队列 基于数组表示的是顺序队列,用elements[maxSize]来表示队列元素的存储结构,用front和rear指示队头和队尾指针 队列建立时要初始化,即front=rear=0,每当新元素加进来就填到原创 2016-10-10 21:26:13 · 296 阅读 · 0 评论 -
数据结构之栈
栈、队列、优先级队列和双端队列是特殊的线性表,逻辑结构与线性表相同 栈是先进后出的线性表,只能在表的末端进行插入删除操作,最开始加进去的叫做栈底,最后加进去的是栈顶,只能在栈顶进行操作 栈的存储表示有两种:顺序栈(基于数组的存储)和链式栈(基于链表的存储) 1.顺序栈 顺序栈的头指针是*elements,存放最大元素个数是maxSize,栈顶元素的位置由下标指针top指定 当t原创 2016-10-12 11:19:20 · 2087 阅读 · 0 评论 -
线性表之顺序表
数据结构分为线性结构和非线性结构,线性结构是简单常用的数据结构,线性表是典型的线性结构。 线性表的定义是由N个(N>=0)节点或者表项构成,他是有限数列,邻接关系是1:1,有两种:有序和无序 线性表可以有不同的数据类型,如广义表,广义表表中元素自身具有某种结构,属于线性表,是线性表的推广 线性表有两种存储方式:顺序存储和链式存储,有基于数组的、基于链表的、散列的表示 顺序表是基于数组的顺原创 2016-09-29 15:33:09 · 750 阅读 · 0 评论 -
线性表之链表
链表存储是数据加指针构成的,数据元素顺序可以喝存储物理顺序相同,也可以不同,因为他是由指针指向下一节点的,通过指针来实现逻辑链接 最简单的链表结构是单链表,单链表的长度可以扩充,一个链表包含零个或者多个节点,链表中首元结点通过头指针first找到,其他节点地址在前驱结点的link中 注意循环链表不是线性表 废话不多说,先看看最常见的插入删除操作 1.单链表的插入 当新数据要插在第原创 2016-09-30 14:35:50 · 389 阅读 · 0 评论 -
AVL树插入删除
AVL树是一种平衡二叉树,其每个节点的左右子树高度最多差1,空树高度定为-1,当左右的高度超过1,即失去了平衡,不是AVL树了。 private static class AVLNode{ AVLNode (AnyType element) {this(element ,null,null);} AVLNode(AnyTape element,AVLNode left,AVLNode r原创 2016-08-29 18:26:48 · 732 阅读 · 0 评论 -
二叉搜索树
二叉搜索树(BST)是一种树,他的特点是节点的子树不超过两个,且大小是有顺序的,任意一点节点其左孩子小于节点值小于右孩子,他的左右子树依然满足。二叉搜索树平均深度是O(log N),所以一般不担心栈空间被耗尽。 privata static calss BinNode{ BinNode(AnyTape element){ this(element,null,null); } BinN原创 2016-08-29 14:59:46 · 481 阅读 · 0 评论 -
常用排序(一)
排序根据元素是否完全在在内存中分为内部排序和外排序,内部排序指的是元素完全存放在内存中,外部排序是不断在内外存3之间移动的排序 基本的排序算法 中:直接插入排序、气泡排序、选择排序中时间复杂度都是n的二次方,高效排序中 :快排、堆排、归并排序都是O(n log2 n) 起泡排序 他是从后倒着来,先比较n-1和n-2元素的大小,如果n-1元素小,就将他两交换位置,接下俩再向前移动,比较n原创 2016-10-18 20:56:55 · 503 阅读 · 0 评论 -
常用排序(二)
选择排序 选择排序说的是:每一趟在后面没有排序n-i个元素中,选择一个最小的放在第 i 个位置上,接下来选择i+1位置上的元素,一共需要执行n-2趟操作,他的时间复杂度是O(N*N) 选择排序有三种实现方式;直接选择排序、锦标赛排序、堆排序 1.直接选择排序 选择最小的元素,如果不是第一个就和第一个对调位置,这样他就是第一个了,重复直到排序结束 void SelectSort(dataL原创 2016-10-19 16:17:26 · 357 阅读 · 0 评论