数据结构
AI蒸汽人
这个作者很懒,什么都没留下…
展开
-
【堆】堆排序
堆排序与快速排序,归并排序一样都是时间复杂度为O(N*logN)的几种常见排序方法。学习堆排序前,先讲解下什么是数据结构中的二叉堆。1.二叉堆的定义二叉堆是完全二叉树或者是近似完全二叉树。二叉堆满足二个特性:1.父结点的键值总是大于或等于(小于或等于)任何一个子节点的键值。2.每个结点的左子树和右子树都是一个二叉堆(都是最大堆或最小堆)。当父结点的键值总是大于或等于任何一个子节点的键值时为最大堆。当转载 2017-04-18 13:57:59 · 233 阅读 · 0 评论 -
【数据结构-栈】杂记
前缀、中缀、后缀表达式 举例:(3 + 4) × 5 - 6 就是中缀表达式- × + 3 4 5 6 前缀表达式3 4 + 5 × 6 - 后缀表达式中缀表达式(中缀记法) 中缀表达式是一种通用的算术或逻辑公式表示方法,操作符以中缀形式处于操作数的中间。中缀表达式是人们常用的算术表示方法。 虽然人的大脑很容易理解与分析中缀表达式,但对计算机来说中缀表达式却是很复杂的,因此计算表达式的值原创 2017-04-30 14:08:27 · 238 阅读 · 0 评论 -
【数据结构-链表】杂记
1.在单链表的开始结点之前附设一个类型相同的结点,称之为头结点。头结点的数据域可以不存储任何信息,头结点的指针域存储指向开始结点的指针(即第一个元素结点的存储位置)。 作用 1、防止单链表是空的而设的.当链表为空的时候,带头结点的头指针就指向头结点.如果当链表为空的时候,单链表没有带头结点,那么它的头指针就为NULL. 2、是为了方便单链表的特殊操作,插入在表头或者删除第一个结点.这样就保持了原创 2017-05-02 15:31:15 · 216 阅读 · 0 评论 -
【数据结构-数组】杂记
1.合并两个已排序的数组/** * @author iamzken * 2015-8-28 * 合并两个有序数组 * */ public class Sorter2 { public static void merge2SortedArray(int[] a , int[] b , int[] c){ //a数组的当前索引 int i = 0; //b数组的当原创 2017-04-23 21:54:50 · 570 阅读 · 0 评论 -
详解KMP算法
<div class="clear"></div> <div class="postBody"> <div id="cnblogs_post_body"><p>KMP算法应该是每一本《数据结构》书都会讲的,算是知名度最高的算法之一了,但很可惜,我大二那年压根就没看懂过~~~</p>之后也在很多地方也都经常看到讲解KMP算法的文章,看久了好像也知道是怎么一回事,但总感觉有些地转载 2017-04-19 19:22:49 · 231 阅读 · 0 评论 -
【数据结构-字符串】杂记
1. 对于一个字符串变量,例如”adereegfbw”,它的子串就是像”ader”这样可以从中找到的连续的字符串。字符串”adereegfbw”本身也属于它本身最长的子串。 子串数量的计算方法 ab的子串:a、b、ab和一个空子串共4个即(2+1+1)个,abc的子串:a、 b、 c、 ab、 bc 、abc和一个空子串 共(3+2+1+1)个, 所以若字符串的长度为n,则子串的个数就是[n原创 2017-04-22 18:50:39 · 608 阅读 · 0 评论 -
【数据结构-队列】杂记
1.循环队列是队列的一种顺序存储结构,用队尾指针 rear 指向队列中的队尾元素,用排头指针 front 指向排头元素的前一个位置。循环链表是用不连续的存储单元存储数据,它有一个表头结点,队头指针指向表头结点,最后一个结点的指针域指向表头结点。二叉链表是树的二叉链表实现方式。栈是一种特殊存取方式的线性表。2.循环队列解决的是“假溢出”问题,但是仍然会出现真正的溢出问题 假溢出指的是下标原创 2017-04-23 15:56:54 · 253 阅读 · 0 评论 -
[java-算法-数据结构] 判断栈的弹出顺序是否正确
package stack;import java.util.Hashtable;import java.util.Stack;/** * 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。 * 假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列, * 但4,3,5,1,2就不可能是原创 2017-05-15 12:25:42 · 466 阅读 · 0 评论