E-COM-NET
首页
在线工具
Layui镜像站
SUI文档
联系我们
推荐频道
Java
PHP
C++
C
C#
Python
Ruby
go语言
Scala
Servlet
Vue
MySQL
NoSQL
Redis
CSS
Oracle
SQL Server
DB2
HBase
Http
HTML5
Spring
Ajax
Jquery
JavaScript
Json
XML
NodeJs
mybatis
Hibernate
算法
设计模式
shell
数据结构
大数据
JS
消息中间件
正则表达式
Tomcat
SQL
Nginx
Shiro
Maven
Linux
【数据结构笔记】
数据结构笔记
顺序表使用数组存储线形的元素,其特点是可以随机存取,但是因为逻辑上相邻的元,素物理上也相邻,所以插入删除需要移动元素。链表使用指针链表示线形表元素的逻辑关系插入和删除只需修改指针,不能随机存取。栈又名堆栈,它是一种运算受限的线性表。其限制是仅允许在表的一端进行插入和删除运算。这一端被称为栈顶,相对地,把另一端称为栈底。向一个栈插入新元素又称作进栈、入栈或压栈,它是把新元素放到栈顶元素的上面,使之成
看山是山
·
2016-01-19 16:00
2.2笔记-线性表合并
数据结构笔记
三 把顺序线性表合并,在教材P26中有个算法2.7。
sdtvyyb_007
·
2015-12-14 12:00
数据结构
合并
线性表
数据结构笔记
(郝斌主讲)(2015-11-26 22:12:54更新完毕)
教材-课外书籍推荐高一凡(伪算法→真代码)数据结构概述 定义 我们如何把现实生活中大量而复杂的问题以特定的数据类型和特定的存储结构保存到主存储器(内存)中,以及在此基础上为实现某个功能(比如查找某个元素,删除某个元素,对所有元素进行排序)而执行的相应操作,这个相应的操作也叫算法 数据结构=个体+个体的关系 算法=对存储数据的操作 算法 解题的方法和步骤 衡量算法的标准 1.时间复杂度
黄滔1996
·
2015-11-26 22:00
数据结构笔记
(郝斌主讲)(2015-11-26 22:12:54更新完毕)
教材-课外书籍推荐高一凡(伪算法→真代码)数据结构概述 定义 我们如何把现实生活中大量而复杂的问题以特定的数据类型和特定的存储结构保存到主存储器(内存)中,以及在此基础上为实现某个功能(比如查找某个元素,删除某个元素,对所有元素进行排序)而执行的相应操作,这个相应的操作也叫算法 数据结构=个体+个体的关系 算法=对存储数据的操作 算法 解题的方法和步骤 衡量算法的标准 1.时间复杂度
黄滔1996
·
2015-11-26 22:00
数据结构笔记
数据结构与算法 1.2.1什么是数据结构 数据:计算机程序加工处理的对象。 抽象的说,数据是对客观事物所进行的描述,而这种描述是采用了计算机能够识别、存储和处理的形式来进行的。 数据元素:组成数据的基本单位。 结构:元素之间存在的相互关系。 逻辑结构:元素之间抽象化的相互关系。 数据结构:描述逻辑结构的一组运算及相应的运算规则。 存储结构(storage structur
·
2015-11-13 12:39
数据结构
数据结构笔记
01:线性表之顺序存储结构(ArrayList)
一般使用数组(C语言中的数组采用顺序存储方式。即连续地址存储)来描述。 优点:在于随机访问元素。 缺点:插入和和删除的时候,需要移动大量的元素。 c语言实现代码:ArrayList 1 // Test.cpp : Defines the entry point for the console application. 2 // 3 4 #include "
·
2015-11-11 19:21
ArrayList
To be solved
space.cnblogs.com/group/topic/1424/ 数学之美系列完整版(最新全集列表) http://www.kuqin.com/math/20071204/2798.html 程序员
数据结构笔记
·
2015-11-11 11:25
ol
数据结构笔记
之—— 顺序表实现
学习数据结构了,写下来,加深记忆。 第一篇: //system("cls"); 控制台屏幕刷新 #include<stdio.h> #include<string.h> #include<malloc.h> #define MAXSIZE 100 typedef int DataType; typedef struct { Da
·
2015-11-11 08:30
数据结构
数据结构学习笔记
数据结构笔记
(1) 第一章 概 论 1.数据:信息的载体,能被计算机识别、存储和加工处理。
·
2015-11-02 17:07
数据结构
js:
数据结构笔记
13--检索算法
顺序查找:也称线性查找,暴力查找的一种 基本格式: var nums = []; for(var i = 0; i < 10; ++i) { nums[i] = Math.floor(Math.random() * 101); } function seqSearch(arr,data) { for(var i = 0; i < ar
·
2015-11-01 09:07
数据结构
js:
数据结构笔记
12--排序算法(2)
高级排序算法:(处理大数据:百万以上) 希尔排序:是插入排序的优化版; 首先设置间隔数组,然后按照每个间隔,分别进行排序; 如第一个间隔为5,首先a[5]与a[0]进行插入排序;然后a[6]和a[0],a[1]进行插入排序,直到最后一个; 然后换下一个间隔值,直到所有间隔值排序完(当间隔值为1时,就是一般的插入排序); 效果:
·
2015-11-01 09:06
数据结构
js:
数据结构笔记
11--排序算法(1)
基本准备: function CArray(numElems) { this.dataStore = []; this.pos = 0; this.numElems = numElems; this.insert = insert; this.toString = toString; this.clear = clear; this
·
2015-11-01 09:06
数据结构
js:
数据结构笔记
10--图和图算法
图:是由边和定点的集合组成; 按照图的定点对是否有序可以分为:有向图和无向图; 路径:所有顶点都由边连接构成;路径长度为第一个定点到最后一个顶点之间的数量; 环:指向自身的顶点,长度为0;圈:至少有一条边的路径,且第一个顶点和最后一个顶点相同; 强连通:如果两个顶点之间有路径,则这两个顶点就是强连通,反之; 构建简单有向图: 利用邻接表
·
2015-11-01 09:05
数据结构
js:
数据结构笔记
7--哈希表
哈希表(散列表):通过哈希函数将键值映射为一个字典; 哈希函数:依赖键值的数据类型来构建一个哈希函数; 一个基本的哈希表:(按字符串计算键值) function HashTable() { this.table = new Array(137); this.simpleHash = simpleHash; this.showDistro = showDistro
·
2015-11-01 09:04
数据结构
js:
数据结构笔记
9--二叉树
树:以分层的方式存储数据;节点:根节点,子节点,父节点,叶子节点(没有任何子节点的节点);层:根节点开始0层; 二叉树:每个节点子节点不超过两个;查找快(比链表),添加,删除快(比数组); BST:二叉树查找: 设置根节点为当前节点; 如果要插入的节点小于当前节点,则设置其左节点为新的当前节点;大于的话选右节点; 如果如果选择的节点为null,则将要插入的节点放在这个位置,退出
·
2015-11-01 09:04
数据结构
js:
数据结构笔记
5--链表
数组: 其他语言的数组缺陷:添加/删除数组麻烦; js数组的缺点:被实现为对象,效率低; 如果要实现随机访问,数组还是更好的选择; 链表: 结构图: 基本代码: function Node (elem) { this.elem = elem; this.next = null; } function LList() { t
·
2015-11-01 09:03
数据结构
js:
数据结构笔记
14--高级算法
动态规划: 递归是从顶部开始将问题分解,通过解决所有分解出小问题来解决整体问题; 动态规划从底部开始解决问题,将所有小问题解决,然后合并掉一个整体解决方案; function dynFib(n) { var val = []; for(var i = 1; i <= n; ++i) { val[i] = 1; } if(n === 1) { ret
·
2015-10-27 16:32
数据结构
js:
数据结构笔记
6--字典
Dictionary类的基础是数组不是对象;字典的主要用途是通过键取值; 基本定义: function Dictionary() { this.dataStore = new Array(); this.add = add; this.find = find; this.remove = remove; this.showAll = showAll;
·
2015-10-27 16:30
数据结构
js:
数据结构笔记
8--集合
集合:唯一性,无序性; 基本结构: function Set () { this.dataStore = []; this.add = add; this.remove = remove; this.contains =contains; this.show = show; } function contains(data) { va
·
2015-10-27 16:30
数据结构
js:
数据结构笔记
4--队列
队列是一种特殊的列表,数据结构为FIFO; 定义: function Queue() { this.dataStore = []; this.enqueue = enqueue; this.dequeue = dequeue; this.front = front; this.back = back; this.count = count;
·
2015-10-27 16:29
数据结构
js:
数据结构笔记
3--栈
栈是一种特殊的列表,数据结构为LIFO; 定义: function Stack() { this.dataStore = []; this.top = 0; this.push = push; this.pop = pop; this.peek = peek; this.length = length; this.clear =cle
·
2015-10-27 16:28
数据结构
js:
数据结构笔记
2---列表
列表: 定义:一组有序的数据; function List() { this.listSize = 0; this.pos = 0; this.dataStore = []; this.find = find; ......................... } 方法: append:添加数据
·
2015-10-27 16:27
数据结构
js:
数据结构笔记
1---数组
JS中数组: 只是一种特殊的对象,比其他语言中效率低; 属性是用来表示偏移量的索引;在JS中,数字索引在内部被转化为字符串类型(这也是为什么写对象属性的时候可以不叫引号),因为对象中的属性必须是字符串类型; 操作: 判断:isArray(); 复制: 浅复制: var arr1 = arr2; 深复
·
2015-10-27 16:26
数据结构
数据结构笔记
#队列
写得太偷懒,太低端。以后的代码尽量用c++,等稍微学习下python那也是极好的。queue.h1#ifndefQUEUE_QUEUE_H 2#defineQUEUE_QUEUE_H 3 4#include 5 6typedefintDataType; 7 8typedefstruct_Node{ 9DataTypedata; 10struct_Node*next; 11 1
prop_jeff
·
2015-10-08 17:00
(
数据结构笔记
)二叉查找树的实现
二叉查找树是一种比较基础的数据结构,其优化后可以变成AVL树,红黑树,treap树等等较为高效的树。使二叉树成为二叉查找树的方法是:对于树中的每个节点,使其左子树中的所有项均小于该节点,其右子树中的所有项均大于该节点。二叉查找树可以利用递归较为简单地实现,其具体的定义和算法可以很方便地查询得到,故不再赘述。二叉查找树应具有的公有成员函数:1.contains(x):如果树中有值为x的节点,则返回t
llc3239
·
2015-09-26 22:56
数据结构
数据结构笔记
(郝斌主讲)(2015-11-26 22:16:36更新完毕)
教材-课外书籍推荐高一凡(伪算法→真代码)数据结构概述定义我们如何把现实生活中大量而复杂的问题以特定的数据类型和特定的存储结构保存到主存储器(内存)中,以及在此基础上为实现某个功能(比如查找某个元素,删除某个元素,对所有元素进行排序)而执行的相应操作,这个相应的操作也叫算法数据结构=个体+个体的关系算法=对存储数据的操作算法解题的方法和步骤衡量算法的标准1.时间复杂度大概程序要执行的次数,而非执行
juliantem
·
2015-08-21 12:00
数据结构
链表
数据结构笔记
之栈
线性结构的两种常见应用之一栈定义一种可以实现“先进后出”的存储结构栈类似于箱子分类静态栈动态栈算法出栈压栈应用函数调用中断表达式求值内存分配缓冲处理迷宫实例#include #include #include typedefstructNode { intdata; structNode*pNext; }NODE,*PNODE; typedefstructStack { PNODEpTop;/
u012348655
·
2015-08-05 14:00
数据结构
代码
栈
数据结构笔记
之线性存储
线性结构[把所有的节点用一根直线穿起来]A:连续存储[数组]1.什么叫数组元素类型相同,大小相等2.数组的优缺点实例:数组操作#include #include #include structArr { int*pBase;//数组第一个元素的地址 intlen;//数组长度 intcnt;//有效元素个数 //intincremant;//自动增长因子 }; voidinit_arr(struc
u012348655
·
2015-08-04 17:00
数据结构
链表
数组
存储
数据结构笔记
整理和思考--动态数组和静态数组的领悟
最近在复习数据结构,但再次重温线性结构中的连续存储章节时,通过使用C语言来模拟Java中的ArrayList的各个方法,感觉对Java中的ArrayList的体会有深刻了。遂想趁此机会将数组的知识点整理一下。首先要了解:数组分为静态数组和动态数组(后者是前者的升级版,其实就是将静态数组通过一个类来再封装一次而已,没什么神秘的)。一.静态数组静态数组又有默认创建,静态创建和动态创建,共三种创建方式;
cmr20004
·
2015-03-15 22:33
数据结构笔记
整理和思考--零碎(1)
1.数据结构主要是研究现实中大而复杂的问题如何以特定的数据类型和特定的存储结构保存在主存储器(内存)中(简而言之,在内存中,个体的如何存储和个体之间关系如何存储)。而如何对这些数据进行操作,就叫做算法。2.数组:由于是连续存储,故往往要开辟新的内存以保证连续,那么对已有空闲内存的利用率很低。线性表:离散存储,可以将内存的间隙(或者说内存碎片)都利用起来。可是在实际使用的过程中,例如开发人事管理系统
cmr20004
·
2015-03-15 22:10
数据结构笔记
(一)
一.递归和循环的区别voidloop() { for(inti=0;i0;i--) result=a[i-1]+x*result; returnresult; } 第二个算法较优,第一个算法复杂度太高。聪明地利用算法,提高效率三.最大字段和 给定K个整数组成的序列{N1,N2,...,NK },“连续子列”被定义为{Ni,Ni+1,...,Nj },其中1maxCoun
chentingk
·
2014-12-03 23:00
数据结构
数据结构笔记
――排序――直接插入排序
直接插入排序是一种最简单的排序方法,它的基本操作是将一个记录插入到已经排好序的有序表中,从而得到一个新的,记录数增加1的有序表。 直接插入排序的C语言实现:void InsertSort(ElemType arr[],int N) { int i,j; for(i=2;i<=N;i++) { if(LT(arr[i],arr[i-1])) { arr[0]=arr[i]; a
丁志新1992
·
2014-09-29 10:12
数据结构
C语言
数据结构笔记
数据结构概述(教材选用严蔚敏、吴伟民,该书程序是伪算法 具体的程序是高一凡,西电的,大牛,只有 程序。还有一本书,台湾的黄国瑜自己写的 只有思路,程序是另外一个合作的清华的写 的,可惜很多错的。)学完数据结构之后会对
luckytyy
·
2014-07-09 12:00
数据结构
算法
数据结构笔记
-构造次优查找树
//构造次优查找树voidsecondOptmal(BiTree&T,ElemtypeR[],floatsw[],intlow,inthigh){inti=low,j;floatmin=sw[high]-sw[low];floatdw=sw[high]+sw[low+1];for(j=low+1;jdata=R[i];if(i==low)T->lchild=NULL;elsesencondOpti
命中无时必强求
·
2014-01-03 18:28
算法
数据结构
数据结构笔记
之查找算法
查找的同时对表做修改运算(如插入和删除),则相应的表称为动态查找表,否则称为静态查找表。 和排序一样,查找分为内查找(查找的表在内存中)和外查找(查找的表在外存中,需要访问外存)。 查找运算的主要运算是关键字的比较,所以通常评价查找的方式是平均查找长度:线性表查找 线性表组织方式是最简单的。 (1)顺序查找:这是最简单的一种,不要求你表中数据乱序顺序存储。平均的查找长度为(n+1
u010064842
·
2013-09-21 21:00
查找
红黑树
avl树
B+树
B-树
数据结构笔记
第一章 概 论1.数据:信息的载体,能被计算机识别、存储和加工处理。2.数据元素:数据的基本单位,可由若干个数据项组成,数据项是具有独立含义的最小标识单位。3.数据结构:数据之间的相互关系,即数据的组织形式。它包括:1)数据的逻辑结构,从逻辑关系上描述数据,与数据存储无关,独立于计算机;2)数据的存储结构,是逻辑结构用计算机语言的实现,依赖于计算机语言。3)数据的运算,定义在逻辑结构上,每种逻辑结
lihaichuan
·
2013-09-09 11:36
数据结构
文件归并学习 严蔚敏讲
数据结构笔记
26
新手发帖,很多方面都是刚入门,有错误的地方请大家见谅,欢迎批评指正 四、关于“排序方法的时间复杂度的下限” 本章探讨的各种排序方法,除基数排序外,其它方法都是基于“比较关键字”进行排序的排序方法,可以证明,这类排序法可能到达的最快的时间复杂度为O(nlogn)。(基数排序不是基于“比较关键字”的排序方法,所以它不受这个制约) 例如:对三个关键字进行排序的判定树如下: 1.
·
2013-05-30 20:00
数据结构
文件主文件学习 严蔚敏讲
数据结构笔记
27
每日一贴,今天的内容关键字为文件主文件 次序文件的插入、删除和更新操纵在少数情况下都采用批处理方法。此时,为处理方便,平日将次序文件做成有序文件,称作“主文件”,同时将所有的操纵做成一个“事务文件”(进过排序也成为有序文件),所谓“批处理”,就是将这两个文件“合”为一个新的主文件。具体操纵相当于“归并两个有序表”。 但有两点不同: (1) 对于事务文件中的每个
·
2013-05-30 20:00
数据结构
文件关键字学习 严蔚敏讲
数据结构笔记
28
最近使用开发的过程中出现了一个小问题,顺便记载一下原因和方法--文件关键字 二、VSAM文件 VSAM(VisualStorageAccessMethod)文件是利用操纵系统中提供的虚拟存储器的功能组织的文件,免除了用户为读写记载时直接对外存进行操纵,对用户而言,文件只有控制区间和控制区域等逻辑存储单位。 1. 文件结构 2. 控制区间是用户进行顺次存取
·
2013-05-30 20:00
数据结构
学习 严蔚敏讲
数据结构笔记
28
二、VSAM文件VSAM(VisualStorageAccessMethod)文件是利用操作系统中提供的虚拟存储器的功能组织的文件,免除了用户为读写记录时直接对外存进行操作,对用户而言,文件只有控制区间和控制区域等逻辑存储单位。1. 文件结构2. 控制区间是用户进行依次存取的逻辑单位,可看成是一个逻辑磁道。但它的实际大小和物理磁道无关。控制区域由若干控制区间和它们的索引项组成,
coperator
·
2013-05-30 08:00
学习 严蔚敏讲
数据结构笔记
27
顺序文件的插入、删除和更新操作在多数情况下都采用批处理方式。此时,为处理方便,通常将顺序文件做成有序文件,称作“主文件”,同时将所有的操作做成一个“事务文件”(进过排序也成为有序文件),所谓“批处理”,就是将这两个文件“合”为一个新的主文件。具体操作相当于“归并两个有序表”。 但有两点不同:(1) 对于事务文件中的每个操作首先要判别其“合法性”;(2) 事务文件中可能存在多个操
coperator
·
2013-05-30 08:00
学习 严蔚敏讲
数据结构笔记
26
四、关于“排序方法的时间复杂度的下限”本章讨论的各种排序方法,除基数排序外,其它方法都是基于“比较关键字”进行排序的排序方法,可以证明,这类排序法可能到达的最快的时间复杂度为O(nlogn)。(基数排序不是基于“比较关键字”的排序方法,所以它不受这个限制)例如:对三个关键字进行排序的判定树如下:1. 树上的每一次“比较”都是必要的。2. 树上的叶子结点包含所有可能情况。一般情况
coperator
·
2013-05-30 08:00
学习 严蔚敏讲
数据结构笔记
25
10.5归并排序归并排序的基本思想是:将两个或两个以上的有序子序列“归并”为一个有序序列。在内部排序中,通常采用的是2-路归并排序。即:将两个位置相邻的有序子序列43_001voidMerge(ElemSR[],ElemTR[],inti, intm,intn){ for(j=m+1,k=i; i<=m&&j<=n;++k) { //将
coperator
·
2013-05-29 07:00
学习 严蔚敏讲
数据结构笔记
24
三、希尔排序(又称缩小增量排序)基本思想:对带排序记录序列先作“宏观”调整,再作“围观”调整。所谓“宏观”调整,置的是“跳跃式”的插入排序。具体做法为:将记录序列分成若干子序列,分别对每个子序列进行插入排序。例如:将n个记录分成d个序列:{R[1],R[1+d],R[1+2d],…,R[1+kd]}{R[2],R[1+d],R[2+d],…,R[2+kd]}…{R[d],R[2d],R[3d],
coperator
·
2013-05-29 07:00
学习 严蔚敏讲
数据结构笔记
23
五、哈希表的删除操作从哈希表中删除记录时,要作特殊的处理,相应地,要修改查找算法。六、对静态查找表,有时也可能找到不发生冲突的哈希函数,即此时的哈希表ASL=0,称此类哈希函数为理想(perfect)的哈希函数。 1. 顺序表和有序表的查找方法及其平均查找长度的计算方法。2. 静态查找树的构造方法和查找算法,理解静态查找树和折半查找的关系3. 熟练掌握二叉排序树的构造和查找方法。4. 理解B-树,
coperator
·
2013-05-29 07:00
学习 严蔚敏讲
数据结构笔记
22
一、哈希表是什么?从上面两节讨论的表示查找表的各种结构,有一个共同点:记录在表中的位置和它的关键字之间不存在一个确定的关系,因此,查找的过程为给定值依次和关键字集合中各个关键字进行比较,查找的效率取决于和给定值进行比较的关键字的个数。用这类方法表示的查找表,其平均查找长度都不为零,不同表示方法的差别仅在于:和给定值进行比较的关键字的顺序不同。对于频繁使用的查找表,希望ASL=0。只有一个办法:预先
coperator
·
2013-05-29 07:00
学习 严蔚敏讲
数据结构笔记
21
三、B-树1.B-树的定义B-树是一种平衡的多路查找树:在m阶的B-树上,每个非终端结点可能含有:n个关键字Ki(ikeynum; i =Search(p,K); //在p->key[1...keynum]中查找i,p->key[i]key[i+1] if(i >0&&p->key[i]==K)
coperator
·
2013-05-29 07:00
学习 严蔚敏讲
数据结构笔记
20
9.2动态查找树表抽象数据类型动态查找表的定义如下:ADTDynamicSearchTable{ 数据对象D:D是具有相同特性的数据元素的集合。每个数据元素含有类型相同的关键字,可唯一标识数据元素。 数据关系R:数据元素同属一个集合}基本操作P:InitDSTable(&DT);DestroyDSTable(&DT);SearchDSTable(DT,key);Inse
coperator
·
2013-05-28 07:00
学习 严蔚敏讲
数据结构笔记
19
第九章查找表查找表:是由同一类型的数据元素(或记录)构成的集合。对查找表经常进行的操作:1) 查询某个“特定的”数据元素是否在查找表中;2) 检索某个“特定的”数据元素的各种属性3) 在查找表中插入一个数据元素4) 从查找表中删去某个数据元素静态查找表仅作查询和检索操作的查找表动态查找表有时在查询之后,还需要将“查询”结果为“不再查找表中”的数据元素插入查找表;或者,从查找表中删除其“查询”结果
coperator
·
2013-05-28 07:00
学习 严蔚敏讲
数据结构笔记
18
遍历是所有非线性结构(包括二叉树,树,图和广义表)的操作基础不同的应用需要应用不同的搜索路径1. 深度优先搜索遍历2广度优先搜索遍历深度优先搜索遍历:二叉树先序,中序,后序树 先根,后根图 先访问顶点,后访问顶点广义表先遍历表头,先遍历表尾深度优先搜索遍历算法的两种形式:递归,非递归6.12已知L[i]和R[i](i=1,2,…n-1)分别指示二叉树中第i个结点的左孩子和右孩
coperator
·
2013-05-28 07:00
上一页
5
6
7
8
9
10
11
12
下一页
按字母分类:
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
其他