《数据结构》知识点总结
![《数据结构》知识点总结](https://img.360docs.net/imgbc/1m1hgp1dnfegi1bagzgmcwdch4yqkbj8-c1.webp)
![《数据结构》知识点总结](https://img.360docs.net/imgbc/1m1hgp1dnfegi1bagzgmcwdch4yqkbj8-b2.webp)
数据结构知识点概括
第一章概论
数据就就是指能够被计算机识别、存储与加工处理得信息得载体。
数据元素就是数据得基本单位,可以由若干个数据项组成。数据项就是具有独立含义得最小标识单位。
数据结构得定义:
·逻辑结构:从逻辑结构上描述数据,独立于计算机。·线性结构:一对一关系。
·线性结构:多对多关系。
·存储结构:就是逻辑结构用计算机语言得实现。·顺序存储结构:如数组。
·链式存储结构:如链表。
·索引存储结构:·稠密索引:每个结点都有索引项。
·稀疏索引:每组结点都有索引项。
·散列存储结构:如散列表。
·数据运算。
·对数据得操作。定义在逻辑结构上,每种逻辑结构都有一个运算集合。
·常用得有:检索、插入、删除、更新、排序。
数据类型:就是一个值得集合以及在这些值上定义得一组操作得总称。
·结构类型:由用户借助于描述机制定义,就是导出类型。
抽象数据类型ADT:·就是抽象数据得组织与与之得操作。相当于在概念层上描述问题。
·优点就是将数据与操作封装在一起实现了信息隐藏。
程序设计得实质就是对实际问题选择一种好得数据结构,设计一个好得算法。算法取决于数据结构。
算法就是一个良定义得计算过程,以一个或多个值输入,并以一个或多个值输出。
评价算法得好坏得因素:·算法就是正确得;
·执行算法得时间;
·执行算法得存储空间(主要就是辅助存储空间);
·算法易于理解、编码、调试。
时间复杂度:就是某个算法得时间耗费,它就是该算法所求解问题规模n得函数。
渐近时间复杂度:就是指当问题规模趋向无穷大时,该算法时间复杂度得数量级。
评价一个算法得时间性能时,主要标准就就是算法得渐近时间复杂度。
算法中语句得频度不仅与问题规模有关,还与输入实例中各元素得取值相关。
时间复杂度按数量级递增排列依次为:常数阶O(1)、对数阶O(log2n)、线性阶O(n)、线性对数阶O(nlog2n)、平方阶O(n^2)、立方阶O(n^3)、……k次方阶O(n^k)、指数阶O(2^n)。
空间复杂度:就是某个算法得空间耗费,它就是该算法所求解问题规模n得函数。
算法得时间复杂度与空间复杂度合称算法复杂度。
第二章线性表
线性表就是由n≥0个数据元素组成得有限序列。
n=0就是空表;非空表,只能有一个开始结点,有且只能有一个终端结点。
线性表上定义得基本运算:
·构造空表:Initlist(L)
·求表长:Listlength(L)
·取结点:GetNode(L,i)
·查找:LocateNode(L,x)
·插入:InsertList(L,x,i)
·删除:Delete(L,i)
顺序表就是按线性表得逻辑结构次序依次存放在一组地址连续得存储单元中。在存储单元中得各元素得物理位置与
逻辑结构中各结点相邻关系就是一致得。地址计算:LOCa(i)=LOCa(1)+(i-1)*d;(首地址为1)在顺序表中实现得基本运算:
·插入:平均移动结点次数为n/2;平均时间复杂度均为O(n)。
·删除:平均移动结点次数为(n-1)/2;平均时间复杂度均为O(n)。
线性表得链式存储结构中结点得逻辑次序与物理次序不一定相同,为了能正确表示结点间得逻辑关系,在存储每个结点值得同时,还存储了其后继结点得地址信息(即指针或链)。这两部分信息组成链表中得结点结构。
一个单链表由头指针得名字来命名。
单链表运算:
·建立单链表·头插法:s->next=head;head=s;生成得顺序与输入顺序相反。平均时间复杂度均为O(n)。
·尾插法:head=rear=null;if(head=null)head=s;else r->next=s;r=s;平均时间复杂度均为O(n)·加头结点得算法:对开始结点得操作无需特殊处理,统一了空表与非空表。
·查找·按序号:与查找位置有关,平均时间复杂度均为O(n)。
·按值:与输入实例有关,平均时间复杂度均为O(n)。
·插入运算:p=GetNode(L,i-1);s->next=p->next;p->next=s;平均时间复杂度均为O(n)
·删除运算:p=GetNode(L,i-1);r=p->next;p->next=r->next;free(r);平均时间复杂度均为O(n)
单循环链表就是一种首尾相接得单链表,终端结点得指针域指向开始结点或头结点。链表终止条件就是以指针等于头指针或尾指针。
采用单循环链表在实用中多采用尾指针表示单循环链表。优点就是查找头指针与尾指针得时间都就是O(1),不用
遍历整个链表。
双链表就就是双向链表,就就是在单链表得每个结点里再增加一个指向其直接前趋得指针域prior,形成两条不同方
向得链。由头指针head惟一确定。
双链表也可以头尾相链接构成双(向)循环链表。
双链表上得插入与删除时间复杂度均为O (1)。
顺序表与链表得比较:·基于空间:
·顺序表得存储空间就是静态分配,存储密度为1;适于线性表事先确定其大小时采用。
·链表得存储空间就是动态分配,存储密度<1;适于线性表长度变化大时采用。
·基于时间:
·顺序表就是随机存储结构,当线性表得操作主要就是查找时,宜采用。
·以插入与删除操作为主得线性表宜采用链表做存储结构。
·若插入与删除主要发生在表得首尾两端,则宜采用尾指针表示得单循环链表。
第三章栈与队列
栈(Stack)就是仅限制在表得一端进行插入与删除运算得线性表,称插入、删除这一端为栈顶,另一端称为栈底。表中无元素时为空栈。栈得修改就是按后进先出得原则进行得,我们又称栈为LIFO表(Last In First Out)。通常栈有
顺序栈与链栈两种存储结构。
栈得基本运算有六种:·构造空栈:InitStack(S)
·判栈空:StackEmpty(S)
·判栈满:StackFull(S)
·进栈:Push(S,x)
·退栈:Pop(S)
·取栈顶元素:StackTop(S)
在顺序栈中有“上溢”与“下溢”得现象。·“上溢”就是栈顶指针指出栈得外面就是出错状态。
·“下溢”可以表示栈为空栈,因此用来作为控制转移得条件。
顺序栈中得基本操作有六种:·构造空栈·判栈空·判栈满·进栈·退栈·取栈顶元素
链栈则没有上溢得限制,因此进栈不要判栈满。链栈不需要在头部附加头结点,只要有链表得头指针就可以了。链栈中得基本操作有五种:·构造空栈·判栈空·进栈·退栈·取栈顶元素
队列(Queue)就是一种运算受限得线性表,插入在表得一端进行,而删除在表得另一端进行,允许删除得一端称为队头(front),允许插入得一端称为队尾(rear),队列得操作原则就是先进先出得,又称作FIFO表(First In First Out)、队列也有顺序存储与链式存储两种存储结构。
队列得基本运算有六种:·置空队:InitQueue(Q)
·判队空:QueueEmpty(Q)
·判队满:QueueFull(Q)
·入队:EnQueue(Q,x)
·出队:DeQueue(Q)
·取队头元素:QueueFront(Q)
顺序队列得“假上溢”现象:由于头尾指针不断前移,超出向量空间。这时整个向量空间及队列就是空得却产生了“上
溢”现象。
为了克服“假上溢”现象引入循环向量得概念,就是把向量空间形成一个头尾相接得环形,这时队列称循环队列。判定循环队列就是空还就是满,方法有三种:
·一种就是另设一个布尔变量来判断;
·第二种就是少用一个元素空间,入队时先测试((rear+1)%m = front)?满:空;
·第三种就就是用一个计数器记录队列中得元素得总数。
队列得链式存储结构称为链队列,一个链队列就就是一个操作受限得单链表。为了便于在表尾进行插入(入队)得操作,在表尾增加一个尾指针,一个链队列就由一个头指针与一个尾指针唯一地确定。链队列不存在队满与上溢
得问题。在链队列得出队算法中,要注意当原队中只有一个结点时,出队后要同进修改头尾指针并使队列变空。
第四章串
串就是零个或多个字符组成得有限序列。
·空串:就是指长度为零得串,也就就是串中不包含任何字符(结点)。
·空白串:指串中包含一个或多个空格字符得串。
·在一个串中任意个连续字符组成得子序列称为该串得子串,包含子串得串就称为主串。
·子串在主串中得序号就就是指子串在主串中首次出现得位置。
·空串就是任意串得子串,任意串就是自身得子串。
串分为两种:·串常量在程序中只能引用不能改变;
·串变量得值可以改变。
串得基本运算有:·求串长strlen(char*s)
·串复制strcpy(char*to,char*from)
·串联接strcat(char*to,char*from)
·串比较charcmp(char*s1,char*s2)
·字符定位strchr(char*s,charc)
串就是特殊得线性表(结点就是字符),所以串得存储结构与线性表得存储结构类似。串得顺序存储结构简称为顺序串。
顺序串又可按存储分配得不同分为:
·静态存储分配:直接用定长得字符数组来定义。优点就是涉及串长得操作速度快,但不适合插入、链接操作。
·动态存储分配:就是在定义串时不分配存储空间,需要使用时按所需串得长度分配存储单元。
串得链式存储就就是用单链表得方式存储串值,串得这种链式存储结构简称为链串。链串与单链表得差异只就是它得结
点数据域为单个字符。
为了解决“存储密度”低得状况,可以让一个结点存储多个字符,即结点得大小。
顺序串上子串定位得运算:又称串得“模式匹配”或“串匹配”,就是在主串中查找出子串出现得位置。在串匹配中,将主串称为目标(串),子串称为模式(串)。这就是比较容易理解得,串匹配问题就就是找出给定模式串P在给定目标串T中首次出现得有效位移或者就是全部有效位移。最坏得情况下时间复杂度就是O((n-m+1)m),假如m与n同阶
得话则它就是O(n^2)。链串上得子串定位运算位移就是结点地址而不就是整数
第五章多维数组
数组一般用顺序存储得方式表示。
存储得方式有:·行优先顺序,也就就是把数组逐行依次排列。PASCAL、C
·列优先顺序,就就是把数组逐列依次排列。FORTRAN
地址得计算方法:·按行优先顺序排列得数组:LOCa(ij)=LOCa(11)+((i-1)*n+(j-1))*d、
·按列优先顺序排列得数组:LOCa(ij)=LOCa(11)+((j-1)*n+(i-1))*d、
矩阵得压缩存储:为多个相同得非零元素分配一个存储空间;对零元素不分配空间。
特殊矩阵得概念:所谓特殊矩阵就是指非零元素或零元素分布有一定规律得矩阵。
稀疏矩阵得概念:一个矩阵中若其非零元素得个数远远小于零元素得个数,则该矩阵称为稀疏矩阵。
特殊矩阵得类型:·对称矩阵:满足a(ij)=a(ji)。元素总数n(n+1)/2、I=max(i,j),J=min(i,j),LOCa(ij)=LOC(sa[0])+(I*(I+1)/2+J)*d、
·三角矩阵:·上三角阵:k=i*(2n-i+1)/2+j-i,LOCa(ij)=LOC(sa[0])+k*d、
·下三角阵:k=i*(i+1)/2+j,LOCa(ij)=LOC(sa[0])+k*d、
·对角矩阵:k=2i+j,LOCa(ij)=LOC(sa[0])+k*d、
稀疏矩阵得压缩存储方式用三元组表把非零元素得值与它所在得行号列号做为一个结点存放在一起,用这些结点组成得一个线性表来表示。但这种压缩存储方式将失去随机存储功能。加入行表记录每行得非零元素在三元组表中得
起始位置,即带行表得三元组表。
第六章树
树就是n个结点得有限集合,非空时必须满足:只有一个称为根得结点;其余结点形成m个不相交得子集,并称
根得子树。
根就是开始结点;结点得子树数称度;度为0得结点称叶子(终端结点);度不为0得结点称分支结点(非终端结
点);除根外得分支结点称内部结点;
有序树就是子树有左,右之分得树;无序树就是子树没有左,右之分得树;森林就是m个互不相交得树得集合;
树得四种不同表示方法:·树形表示法;·嵌套集合表示法;·凹入表示法·广义表表示法。
二叉树得定义:就是n≥0个结点得有限集,它就是空集(n=0)或由一个根结点及两棵互不相交得分别称作这个根得
左子树与右子树得二叉树组成。
二叉树不就是树得特殊情形,与度数为2得有序树不同。
二叉树得4个重要性质:·二叉树上第i层上得结点数目最多为2^(i-1)(i≥1)。;
·深度为k得二叉树至多有(2^k)-1个结点(k≥1);
·在任意一棵二叉树中,若终端结点得个数为n0,度为2得结点数为n2,则n0=n2+1;
·具有n个结点得完全二叉树得深度为int(log2n)+1、
满二叉树就是一棵深度为k,结点数为(2^k)-1得二叉树;完全二叉树就是满二叉树在最下层自右向左去处部分结点;
二叉树得顺序存储结构就就是把二叉树得所有结点按照层次顺序存储到连续得存储单元中。(存储前先将其画成完全
二叉树)
树得存储结构多用得就是链式存储。BinTNode得结构为lchild|data|rchild,把所有BinTNode类型得结点,加上一个指向根结点得BinTree型头指针就构成了二叉树得链式存储结构,称为二叉链表。它就就是由根指针root唯一确定得。
共有2n个指针域,n+1个空指针。
根据访问结点得次序不同可得三种遍历:先序遍历(前序遍历或先根遍历),中序遍历(或中根遍历)、后序遍历(或后根遍历)。时间复杂度为O(n)。
利用二叉链表中得n+1个空指针域来存放指向某种遍历次序下得前趋结点与后继结点得指针,这些附加得指针就称为“线索”,加上线索得二叉链表就称为线索链表。线索使得查找中序前趋与中序后继变得简单有效,但对于查找指定结
点得前序前趋与后序后继并没有什么作用。
树与森林及二叉树得转换就是唯一对应得。
转换方法:·树变二叉树:兄弟相连,保留长子得连线。
·二叉树变树:结点得右孩子与其双亲连。
·森林变二叉树:树变二叉树,各个树得根相连。
树得存储结构:·有双亲链表表示法:结点data | parent,对于求指定结点得双亲或祖先十分方便,但不适于求指定
结
点得孩子及后代。
·孩子链表表示法:为树中每个结点data | next设置一个孩子链表firstchild,并将data | firstchild存放在一个向量中。
·双亲孩子链表表示法:将双亲链表与孩子链表结合。
·孩子兄弟链表表示法:结点结构leftmostchild |data | rightsibing,附加两个分别指向该结点得最左孩子与右邻兄弟得
指针域。
树得前序遍历与相对应得二叉树得前序遍历一致;树得后序遍历与相对应得二叉树得中序遍历一致。
树得带权路径长度就是树中所有叶结点得带权路径长度之与。树得带权路径长度最小得二叉树就称为最优二叉树
(即哈夫曼树)。
在叶子得权值相同得二叉树中,完全二叉树得路径长度最短。
哈夫曼树有n个叶结点,共有2n-1个结点,没有度为1得结点,这类树又称为严格二叉树。
变长编码技术可以使频度高得字符编码短,而频度低得字符编码长,但就是变长编码可能使解码产生二义性。如00、01、0001这三个码无法在解码时确定就是哪一个,所以要求在字符编码时任一字符得编码都不就是其她字符编码得
前缀,这种码称为前缀码(其实就是非前缀码)。
哈夫曼树得应用最广泛地就是在编码技术上,它能够容易地求出给定字符集及其概率分布得最优前缀码。哈夫曼编码得构造很容易,只要画好了哈夫曼树,按分支情况在左路径上写代码0,右路径上写代码1,然后从上到下到叶结
点得相应路径上得代码得序列就就是该结点得最优前缀码。
第七章图
图得逻辑结构特征就就是其结点(顶点)得前趋与后继得个数都就是没有限制得,即任意两个结点之间之间都可能相关。
图GraphG=(V,E),V就是顶点得有穷非空集合,E就是顶点偶对得有穷集。
有向图Digraph:每条边有方向;无向图Undigraph:每条边没有方向。
有向完全图:具有n*(n-1)条边得有向图;无向完全图:具有n*(n-1)/2条边得无向图;
有根图:有一个顶点有路径到达其它顶点得有向图;简单路径:就是经过顶点不同得路径;简单回路就是开始与终端重
得简单路径;
网络:就是带权得图。
图得存储结构:
·邻接矩阵表示法:用一个n阶方阵来表示图得结构就是唯一得,适合稠密图。
·无向图:邻接矩阵就是对称得。
·有向图:行就是出度,列就是入度。
建立邻接矩阵算法得时间就是O(n+n^2+e),其时间复杂度为O(n^2)
·邻接表表示法:用顶点表与邻接表构成不就是唯一得,适合稀疏图。
·顶点表结构vertex | firstedge,指针域存放邻接表头指针。
·邻接表:用头指针确定。·无向图称边表;
·有向图又分出边表与逆邻接表;
·邻接表结点结构为adjvex | next,
时间复杂度为O(n+e)。,空间复杂度为O(n+e)。。
图得遍历:·深度优先遍历:借助于邻接矩阵得列。使用栈保存已访问结点。
·广度优先遍历:借助于邻接矩阵得行。使用队列保存已访问结点。
生成树得定义:若从图得某个顶点出发,可以系统地访问到图中所有顶点,则遍历时经过得边与图得所有顶点构成得子图称作该图得生成树。
最小生成树:图得生成树不唯一,从不同得顶点出发可得到不同得生成树,把权值最小得生成树称为最小生成树
(MST)。
构造最小生成树得算法:·Prim算法得时间复杂度为O(n^2)与边数无关适于稠密图。
·Kruskal算法得时间复杂度为O(lge),主要取决于边数,较适合于稀疏图。
最短路径得算法:·Dijkstra算法,时间复杂度为O(n^2)。·类似于prim算法。
拓扑排序:就是将有向无环图G中所有顶点排成一个线性序列,若∈E(G),则在线性序列u在v之前,这种线性序列称为拓扑序列。
拓扑排序也有两种方法:
·无前趋得顶点优先,每次输出一个无前趋得结点并删去此结点及其出边,最后得到得序列即拓扑序列。
·无后继得结点优先:每次输出一个无后继得结点并删去此结点及其入边,最后得到得序列就是逆拓扑序列。
第八章排序
记录中可用某一项来标识一个记录,则称为关键字项,该数据项得值称为关键字。
排序就是使文件中得记录按关键字递增(或递减)次序排列起来。
·基本操作:比较关键字大小;改变指向记录得指针或移动记录。
·存储结构:顺序结构、链表结构、索引结构。
经过排序后这些具有相同关键字得记录之间得相对次序保持不变,则称这种排序方法就是稳定得,否则排序算法就是不稳定得。
排序过程中不涉及数据得内、外存交换则称之为“内部排序”(内排序),反之,若存在数据得内外存交换,则称之为外排序。
内部排序方法可分五类:插入排序、选择排序、交换排序、归并排序与分配排序。
评价排序算法好坏得标准主要有两条:执行时间与所需得辅助空间,另外算法得复杂程序也就是要考虑得一个因素。
插入排序:·直接插入排序:·逐个向前插入到合适位置。
·哨兵(监视哨)有两个作用:·作为临变量存放R[i]
·就是在查找循环中用来监视下标变量j就是否越界。
·直接插入排序就是就地得稳定排序。时间复杂度为O(n^2),比较次数为(n+2)(n-1)/2;移动次数为(n+4)(n-1)/2;
·希尔排序:·等间隔得数据比较并按要求顺序排列,最后间隔为1、
·希尔排序就是就地得不稳定排序。时间复杂度为O(n^1、25),比较次数为(n^1、25);移动次数为(1、6n^1、25);
交换排序:·冒泡排序:·自下向上确定最轻得一个。·自上向下确定最重得一个。·自下向上确定最轻得一个,后自上向下确定最重得一个。
·冒泡排序就是就地得稳定排序。时间复杂度为O(n^2),比较次数为n(n-1)/2;移动次数为3n(n-1)/2;
·快速排序:·以第一个元素为参考基准,设定、动两个指针,发生交换后指针交换位置,直到指针重合。重复直到排序完成。
·快速排序就是非就地得不稳定排序。时间复杂度为O(nlog2n),比较次数为n(n-1)/2;
选择排序:·直接选择排序:·选择最小得放在比较区前。
·直接选择排序就地得不稳定排序。时间复杂度为O(n^2)。比较次数为n(n-1)/2;
·堆排序·建堆:按层次将数据填入完全二叉树,从int(n/2)处向前逐个调整位置。
·然后将树根与最后一个叶子交换值并断开与树得连接并重建堆,直到全断开。
·堆排序就是就地不稳定得排序,时间复杂度为O(nlog2n),不适宜于记录数较少得文件。
归并排序:·先两个一组排序,形成(n+1)/2组,再将两组并一组,直到剩下一组为止。
·归并排序就是非就地稳定排序,时间复杂度就是O(nlog2n),
分配排序:·箱排序:·按关键字得取值范围确定箱子数,按关键字投入箱子,链接所有非空箱。
·箱排序得平均时间复杂度就是线性得O(n)。
·基数排序:·从低位到高位依次对关键字进行箱排序。
·基数排序就是非就稳定得排序,时间复杂度就是O(d*n+d*rd)。
各种排序方法得比较与选择:·待排序得记录数目n;n较大得要用时间复杂度为O(nlog2n)得排序方法;
·记录得大小(规模);记录大最好用链表作为存储结构,而快速排序与堆排序在链表上难于实现;
·关键字得结构及其初始状态;·对稳定性得要求;
·语言工具得条件;·存储结构;·时间与辅助空间复杂度。
第九章查找
查找得同时对表做修改操作(如插入或删除)则相应得表称之为动态查找表,否则称之为静态查找表。
衡量查找算法效率优劣得标准就是在查找过程中对关键字需要执行得平均比较次数(即平均查找长度ASL)。
线性表查找得方法:·顺序查找:逐个查找,ASL=(n+1)/2;
·二分查找:取中点int(n/2)比较,若小就比左区间,大就比右区间。用二叉判定树表示。ASL=(∑(每层结点数*层数))/N、
·分块查找。要求“分块有序”,将表分成若干块内部不一定有序,并抽取各块中得最大关键字及其位置建立有序索引表。
二叉排序树(BST)定义就是:二叉排序树就是空树或者满足如下性质得二叉树:·若它得左子树非空,则左子树上所有结点得值均小于根结点得值;
·若它得右子树非空,则右子树上所有结点得值均大于根结点得值;
·左、右子树本身又就是一棵二叉排序树。
二叉排序树得插入、建立、删除得算法平均时间性能就是O(nlog2n)。
二叉排序树得删除操作可分三种情况进行处理:·*P就是叶子,则直接删除*P,即将*P得双亲*parent中指向*P得指针域置空即可。
·*P只有一个孩子*child,此时只需将*child与*p得双亲直接连接就可删去*p、
·*p有两个孩子,则先将*p结点得中序后继结点得数据到*p,删除中序后继结点。
关于B-树(多路平衡查找树)。它适合在磁盘等直接存取设备上组织动态得查找表,就是一种外查找算法。建立得方式就是从下向上拱起。
散列技术:将结点按其关键字得散列地址存储到散列表得过程称为散列。散列函数得选择有两条标准:简单与均匀。
常见得散列函数构得造方法:
·平方取中法:hash=int((x^2)%100)
·除余法:表长为m,hash=x%m
·相乘取整法:hash=int(m*(x*A-int(x*A));A=0、618
·随机数法:hash=random(x)。
处理冲突得方法:·开放定址法:·一般形式为hi=(h(key)+di)%m1≤i≤m-1,开放定址法要求散列表得装填因子α≤1、
·开放定址法类型:·线性探查法:address=(hash(x)+i)%m;
·二次探查法:address=(hash(x)+i^2)%m;
·双重散列法:address=(hash(x)+i*hash(y))%m;
·拉链法:·就是将所有关键字为同义词得结点链接在同一个单链表中。
·拉链法得优点:·拉链法处理冲突简单,且无堆积现象;
·链表上得结点空间就是动态申请得适于无法确定表长得情况;
·拉链法中α可以大于1,结点较大时其指针域可忽略,因此节省空间;
·拉链法构造得散列表删除结点易实现。
·拉链法也有缺点:当结点规模较小时,用拉链法中得指针域也要占用额外空间,还就是开放定址法省空间。
第十章排序
10、1 排序得基本概念
10、2 插入排序
10、3 选择排序
10、4 交换排序
本章主要知识点:
排序得基本概念与衡量排序算法优劣得标准,其中衡量标准有算法得时间复杂度、空间复杂度与稳定性
直接插入排序,希尔排序
直接选择排序,堆排序
冒泡排序,快速排序
10、1排序得基本概念
1、排序就是对数据元素序列建立某种有序排列得过程。
2、排序得目得:便于查找。
3、关键字就是要排序得数据元素集合中得一个域,排序就是以关键字为基准进行得。
关键字分主关键字与次关键字两种。对要排序得数据元素集合来说,如果关键字满足数据元素值不同时该关键字得值也一定不同,这样得关键字称为主关键字。不满足主关键字定义得关键字称为次关键字。
4、排序得种类:分为内部排序与外部排序两大类。
若待排序记录都在内存中,称为内部排序;若待排序记录一部分在内存,一部分在外存,则称为外部排序。注:外部排序时,要将数据分批调入内存来排序,中间结果还要及时放入外
存,显然外部排序要复杂得多。
5、排序算法好坏得衡量标准:
(1)时间复杂度——它主要就是分析记录关键字得比较次数与记录得移动次数。
(2)空间复杂度——算法中使用得内存辅助空间得多少。
(3)稳定性——若两个记录A与B得关键字值相等,但排序后A、B得先后次序保持不变,则称这种排序算法就是稳定得。
10、2 插入排序
插入排序得基本思想就是:每步将一个待排序得对象,按其关键字大小,插入到前面已经排好序得一组对象得适当位置上,直到对象全部插入为止。
简言之,边插入边排序,保证子序列中随时都就是排好序得。
常用得插入排序有:直接插入排序与希尔排序两种。
10、2、1 直接插入排序
1、其基本思想就是:
顺序地把待排序得数据元素按其关键字值得大小插入到已排序数据元素子集合得适当位置。
例1:关键字序列T=(13,6,3,31,9,27,5,11),
请写出直接插入排序得中间过程序列。
初始关键字序列:【13】, 6, 3, 31, 9, 27, 5, 11
第一次排序:【6, 13】, 3, 31, 9, 27, 5, 11
第二次排序:【3, 6, 13】, 31, 9, 27, 5, 11
第三次排序:【3, 6, 13,31】, 9, 27, 5, 11
第四次排序:【3, 6, 9, 13,31】, 27, 5, 11
第五次排序:【3, 6, 9, 13,27, 31】, 5, 11
第六次排序:【3, 5, 6, 9, 13,27, 31】, 11
第七次排序:【3, 5, 6, 9, 11,13,27, 31】
注:方括号[ ]中为已排序记录得关键字,下划横线得关键字
表示它对应得记录后移一个位置。
2、直接插入排序算法
public static void insertSort(int[] a){
int i, j, temp;
int n = a、Length;
for(i = 0; i < n - 1; i ++){
temp = a[i + 1];
j = i;
while(j > -1 && temp < a[j]){
a[j + 1] = a[j];
j --;
}
a[j + 1] = temp;
}
}
初始关键字序列:【13】, 6, 3, 31, 9, 27, 5, 11
第一次排序:【6, 13】, 3, 31, 9, 27, 5, 11
第二次排序:【3, 6, 13】, 31, 9, 27, 5, 11
3、直接插入排序算法分析
(1)时间效率:当数据有序时,执行效率最好,此时得时间复杂度为O(n);当数据基本反序时,执行效率最差,此时得时间复杂度为O(n2)。所以当数据越接近有序,直接插入排序算法得性能越好。
(2)空间效率:仅占用1个缓冲单元——O(1)
(3)算法得稳定性:稳定
8、2、2 希尔(shell)排序(又称缩小增量排序)
1、基本思想:把整个待排序得数据元素分成若干个小组,对同一小组内得数据元素用直接插入法排序;小组得个数逐次缩小,当完成了所有数据元素都在一个组内得排序后排序过程结束。
2、技巧:小组得构成不就是简单地“逐段分割”,而就是将相隔某个增量d得记录组成一个小组,让增量d逐趟缩短(例如依次取5,3,1),直到d=1为止。
3、优点:让关键字值小得元素能很快前移,且序列若基本有序时,再用直接插入排序处理,时间效率会高很多。例2:设待排序得序列中有12个记录,它们得关键字序列T=(65,34,25,87,12,38,56,46,14,77,92,23),请写出希尔排序得具体实现过程。
public static void shellSort(int[] a, int[] d, int numOfD){
int i, j, k, m, span;
int temp;
int n = a、Length;
for(m = 0; m < numOfD; m ++){ //共numOfD次循环
span = d[m]; //取本次得增量值
for(k = 0; k < span; k ++){ //共span个小组
for(i = k; i < n-span; i = i + span){
temp = a[i+span];
j = i;
while(j > -1 && temp < a[j]){
a[j + span] = a[j];
j = j - span;
}
a[j + span] = temp;
}
}
}
}
算法分析:开始时d 得值较大,子序列中得对象较少,排序速度较快;随着排序进展,d 值逐渐变小,子序列中对象个数逐渐变多,由于前面工作得基础,大多数记录已基本有序,所以排序速度仍然很快。
时间效率:O(n(log2n)2)
空间效率:O(1)——因为仅占用1个缓冲单元
算法得稳定性:不稳定
练习:
1、欲将序列(Q, H, C, Y, P, A, M, S, R, D, F, X)中得关键码按字母升序重排,则初始d为4得希尔排序一趟得结果就是?
答:原始序列:Q, H, C, Y, P, A, M, S, R, D, F, X
shell一趟后:P,A,C,S,Q,D,F,X,R,H,M,Y
2、以关键字序列(256,301,751,129,937,863,742,694,076,438)为例,写出执行希尔排序(取d=5,3,1)算法得各趟排序结束时,关键字序列得状态。
解:原始序列: 256,301,751,129,937,863,742,694,076,438
希尔排序第一趟d=5 256 301 694 076 438 863 742 751 129 937
第二趟d=3 076 301 129 256 438 694 742 751 863 937
第三趟d=1 076 129 256 301 438 694 742 751 863 937
10、3 选择排序
选择排序得基本思想就是:每次从待排序得数据元素集合中选取关键字最小(或最大)得数据元素放到数据元素集合得最前(或最后),数据元素集合不断缩小,当数据元素集合为空时选择排序结束。
常用得选择排序算法:
(1)直接选择排序
(2)堆排序
10、3、1直接选择排序
1、其基本思想
每经过一趟比较就找出一个最小值,与待排序列最前面得位置互换即可。
(即从待排序得数据元素集合中选取关键字最小得数据元素并将它与原始数据元素集合中得第一个数据元素交换位置;然后从不包括第一个位置得数据元素集合中选取关键字最小得数据元素并将它与原始数据集合中得第二个数据元素交换位置;如此重复,直到数据元素集合中只剩一个数据元素为止。)
2、优缺点
优点:实现简单
缺点:每趟只能确定一个元素,表长为n时需要n-1趟
例3:关键字序列T= (21,25,49,25*,16,08),请给出直接选择排序得具体实现过程。
原始序列:21,25,49,25*,16,08
第1趟08,25,49,25*,16,21
第2趟08,16, 49,25*,25,21
第3趟08,16, 21,25*,25,49
第4趟08,16, 21,25*,25,49
第5趟08,16, 21,25*,25,49
public static void selectSort(int[] a){
int i, j, small;
int temp;
int n = a、Length;
for(i = 0; i < n - 1; i ++){
small = i; //设第i个数据元素最小
for(j = i + 1; j < n; j ++) //寻找最小得数据元素
if(a[j] < a[small]) small = j; //记住最小元素得下标
if(small != i){ //当最小元素得下标不为i时交换位置
temp = a[i];
a[i] = a[small];
a[small] = temp;
}
}
}
3、算法分析
时间效率:O(n2)——虽移动次数较少,但比较次数仍多。
空间效率:O(1)——没有附加单元(仅用到1个temp)
算法得稳定性:不稳定
4、稳定得直接选择排序算法
例:关键字序列T= (21,25,49,25*,16,08),请给出稳定得直接选择排序得具体实现过程。
原始序列:21,25,49,25*,16,08
第1趟08, 21 , 25 , 49 , 25 *, 16
第2趟08,16, 21,25,49 ,25 *
第3趟08,16, 21,25,49 ,25 *
第4趟08,16, 21,25,49 ,25 *
第5趟08,16, 21,25,25 * ,49
public static void selectSort2(int [] a){
int i,j,small;
int temp;
int n = a、Length;
for(i = 0; i < n-1; i++){
small = i;
for(j = i+1; j < n; j++){ //寻找最小得数据元素
if(a[j] < a[small]) small = j; //记住最小元素得下标
}
if(small != i){
temp = a[small];
for(j = small; j > i; j--) //把该区段尚未排序元素依次后移
a[j] = a[j-1];
a[i] = temp; //插入找出得最小元素
}
}
}
8、3、2 堆排序
1、什么就是堆?
2、怎样建堆?
3、怎样堆排序?
堆得定义:设有n个数据元素得序列k0,k1,…,kn-1,当且仅当满足下述关系之一时,称之为堆。
解释:如果让满足以上条件得元素序列(k0,k1,…,kn-1)顺次排成一棵完全二叉树,则此树得特点就是:树中所有结点得值均大于(或小于)其左右孩子,此树得根结点(即堆顶)必最大(或最小)。
例4:有序列T1=(08, 25, 49, 46, 58, 67)与序列T2=(91, 85, 76, 66, 58, 67, 55),判断它们就是否“堆”?
2、怎样建堆?
步骤:从第一个非终端结点开始往前逐步调整,让每个双亲大于(或小于)子女,直到根结点为止。
终端结点(即叶子)没有任何子女,无需单独调整
例:关键字序列T= (21,25,49,25*,16,08),请建最大堆。
解:为便于理解,先将原始序列画成完全二叉树得形式:
这样可以很清晰地从(n-1-1)/2开始调整。
public static void createHeap(int[] a, int n, int h){
int i, j, flag;
int temp;
i = h;
j = 2 * i + 1; // j为i结点得左孩子结点得下标
temp = a[i];
flag = 0;
while(j < n && flag != 1){
//寻找左右孩子结点中得较大者,j为其下标
if(j < n - 1 && a[j] < a[j + 1]) j++;
if (temp >= a[j]) //a[i]>=a[j]
flag = 1; //标记结束筛选条件
else{ //否则把a[j]上移
a[i] = a[j];
i = j;
j = 2 * i + 1;
}
}
a[i] = temp;
}
利用上述createHeap(a,n,h)函数,初始化创建最大堆得过程就就是从第一个非叶子结点a[i]开始,到根结点a[0]为止,循环调用createHeap(a,n,h)得过程。
初始化创建最大堆算法如下:
public static void initCreateHeap(int[] a){
int n = a、Length;
for(int i = (n-1-1) / 2; i >= 0; i --)
createHeap(a, n, i);
}
3、怎样进行整个序列得堆排序?
*基于初始堆进行堆排序得算法步骤:
堆得第一个对象a[0]具有最大得关键码,将a[0]与a[n-1]对调,把具有最大关键码得对象交换到最后;
再对前面得n-1个对象,使用堆得调整算法,重新建立堆(调整根结点使之满足最大堆得定义)。结果具有次最大关键码得对象又上浮到堆顶,即a[0]位置;
再对调a[0]与a[n-2],然后对前n-2个对象重新调整,…如此反复,最后得到全部排序好得对象序列。
例5:对刚才建好得最大堆进行排序:
public static void heapSort(int[] a){
int temp;
int n = a、Length;
initCreateHeap(a); //初始化创建最大堆
for(int i = n - 1; i > 0; i --){ //当前最大堆个数每次递减1
//把堆顶a[0]元素与当前最大堆得最后一个元素交换
temp = a[0];
a[0] = a[i];
a[i] = temp;
createHeap(a,i, 0); //调整根结点满足最大堆
}
}
4、堆排序算法分析:
时间效率:O(nlog2n)。
空间效率:O(1)。
稳定性:不稳定。
练习1:以下序列就是堆得就是()
{75,65,30,15,25,45,20,10} B、{75,65,45,10,30,25,20,15}
C、{75,45,65,30,15,25,20,10}
D、{75,45,65,10,25,30,20,15}
练习2:有一组数据{15,9,7,8,20,1,7*,4},建成得最小堆为()。
A、{1,4,8,9,20,7,15,7*}
B、{1,7,15,7*,4,8,20,9}
C、{1,4,7,8,20,15,7*,9}
D、以上都不对
练习3:已知序列{503,87,512,61,908,170,897,275,653,462},写出采用堆排序对该序列作非递减排列时得排序过程。
排序好得序列为:61,87,170,275,462,503,512,653,897,908
10、4 交换排序
交换排序得基本思想就是:利用交换数据元素得位置进行排序得方法。
交换排序得主要算法有:
1) 冒泡排序
2) 快速排序
10、4、1 冒泡排序
1、基本思路:每趟不断将记录两两比较,并按“前小后大”(或“前大后小”)规则交换。
2、优点:每趟结束时,不仅能挤出一个最大值到最后面位置,还能同时部分理顺其她元素;一旦下趟没有交换发
生,还可以提前结束排序。
例:关键字序列T=(21,25,49,25*,16,08),请按从小到大得顺序,写出冒泡排序得具体实现过程。
初态:21,25,49,25*,16,08
第1趟21,25,25*,16,08 ,49
第2趟21,25,16,08 ,25*,49
第3趟21,16,08 ,25,25*,49
第4趟16,08 ,21,25,25*,49
第5趟08,16,21,25,25*,49
3、冒泡排序算法
public static void bubbleSort(int[] a){
int i, j, flag=1;
int temp;
int n = a、Length;
for(i = 1; i < n && flag == 1; i++){
flag = 0;
for(j = 0; j < n-i; j++){
if(a[j] > a[j+1]){
flag = 1;
temp = a[j];
a[j] = a[j+1];
a[j+1] = temp;
}
}
}
}
4、冒泡排序得算法分析
时间效率:O(n2) —因为要考虑最坏情况(数据元素全部逆序),当然最好情况就是数据元素已全部排好序,此时循环n-1次,时间复杂度为O(n)
空间效率:O(1)—只在交换时用到一个缓冲单元
稳定性:稳定—25与25*在排序前后得次序未改变
练习:关键字序列T=(31,15,9,25,16,28),请按从小到大得顺序,写出冒泡排序得具体实现过程。
初态:31,15,9,25,16,28
第1趟15,9,25,16,28,31
第2趟9,15,16,25,28,31
第3趟9,15,16,25,28,31
1、基本思想:设数组a中存放了n个数据元素,low为数组得低端下标,high为数组得高端下标,从数组a中任取一个元素(通常取a[low])做为标准元素,以该标准元素调整数组a中其她各个元素得位置,使排在标准元素前面得元素均小于标准元素,排在标准元素后面得均大于或等于标准元素。这样一次排序过程结束后,一方面将标准元素放在了未来排好序得数组中该标准元素应位于得位置上,另一方面将数组中得元素以标准元素为中心分成了两个子数组,位于标准元素左边子数组中得元素均小于标准元素,位于标准元素右边子数组中得元素均大于等于或标准元素。对这两个子数组中得元素分别再进行方法类同得递归快速排序。算法得递归出口条件就是low≥high。
例、关键字序列T=(60,55,48,37,10,90,84,36),请按从小到大得顺序,写出快速排序得具体实现过程。快速排序算法各次快速排序过程
3、快速排序算法
public static void quickSort(int[] a, int low, int high){
int i, j;
int temp;
i = low;
j = high;
temp = a[low]; //取第一个元素为标准数据元素
while(i < j){
//在数组得右端扫描
while(i < j && temp <= a[j]) j--;
if(i < j){
a[i] = a[j];
i++;
}
//在数组得左端扫描
while(i < j && a[i] < temp) i++;
if(i < j){
a[j] = a[i];
j--;
}
}
a[i] = temp;
if(low < i) quickSort(a, low, i-1); //对左端子集合递归
if(i < high) quickSort(a, j+1, high); //对右端子集合递归
}
4、快速排序算法分析:
时间效率:一般情况下时间复杂度为O(nlog2n),最坏情况就是数据元素已全部正序或反序有序,此时每次标准元素都把当前数组分成一个大小比当前数组小1得子数组,此时时间复杂度为O(n2)
空间效率:O(log2n)—因为递归要用栈
稳定性:不稳定—因为有跳跃式交换。
练习:已知序列{503,87,512,61,908,170,897,275,653,462},给出采用快速排序对该序列作非递减排序时每趟得结果。第一趟:【462 87 275 61 170】503 【897 908 653 512】
第二趟:【170 87 275 61 】462 503 【512 653】897 【908】
第三趟:【61 87】170 【275】462 503 512 【653】897 908
第四趟:61 【87】170 275 462 503 512 653 897 908
最后排序结果:61 87 170 275 462 503 512 653 897 908
1、插入排序就是稳定得,选择排序就是不稳定得。
2、堆排序所需要附加空间数与待排序得记录个数无关。
3、对有n个记录得集合进行快速排序,所需时间确定于初始记录得排列情况,在初始记录无序得情况下最好。
4、直接插入排序在最好情况下得时间复杂度为( A )
A、O(n)
B、O(nlog2n)
C、O(log2n)
D、O(n2)
5、数据序列{8,9,10,4,5,6,20,1,2}只能就是(C )算法得两趟排序后得结果。
A、直接选择排序
B、冒泡排序
C、直接插入排序
D、堆排序
6、用直接插入排序对下面4个序列进行递增排序,元素比较次数最少得就是(C )
A、94,32,40,90,80,46,21,69
B、32,40,21,46,69,94,90,80
C、21,32,46,40,80,69,90,94
D、90,69,80,46,21,32,94,40
7、、以下排序算法中,(B )不能保证每趟排序至少能将一个元素放到其最终位置上。
A、快速排序
B、希尔排序
C、堆排序
D、冒泡排序
8、对关键字{28,16,32,12,60,2,5,72}序列进行快速排序,第一趟从小到大一次划分结果为(B )
A、(2,5,12,16)26(60,32,72)
B、(5,16,2,12)28(60,32,72)
C、(2,16,12,5)28(60,32,72)
D、(5,16,2,12)28(32,60,72)
9、若用冒泡排序对关键字序列{18,16,14,12,10,8}进行从小到大得排序,所需进行得关键字比较总次数就是( B )。
A、10
B、15
C、21
D、34
10、一组记录得关键字为{45,80,55,40,42,85},则利用堆排序得方法建立得初始堆为( B )。
A、{85,80,45,40,42,55}
B、{85,80,55,40,42,45}
C、{85,80,55,45,42,40}
D、{85,55,80,42,45,40}
第十章文件
文件就是性质相同得记录得集合。记录就是文件中存取得基本单位,数据项就是文件可使用得最小单位,数据项有时称字段或者属性。
文件·逻辑结构就是一种线性结构。
·操作有:检索与维护。并有实时与批量处理两种处理方式。
文件·存储结构就是指文件在外存上得组织方式。
·基本得组织方式有:顺序组织、索引组织、散列组织与链组织。
·常用得文件组织方式:顺序文件、索引文件、散列文件与多关键字文件。
评价一个文件组织得效率,就是执行文件操作所花费得时间与文件组织所需得存储空间。
检索功能得多寡与速度得快慢,就是衡量文件操作质量得重要标志。
顺序文件就是指按记录进入文件得先后顺序存放、其逻辑顺序与物理顺序一致得文件。主关键字有序称顺序有序文件,否则称顺序无序文件。
一切存储在顺序存储器(如磁带)上得文件都只能顺序文件,只能按顺序查找法存取。
顺序文件得插入、删除与修改只能通过复制整个文件实现。
索引文件得组织方式:通常就是在主文件之外建立一张索引表指明逻辑记录与物理记录之间一一对应得关系,它与主文件一起构成索引文件。
索引非顺序文件中得索引表为稠密索引。索引顺序文件中得索引表为稀疏索引。
若记录很大使得索引表也很大时,可对索引表再建立索引,称为查找表。就是一种静态索引。
索引顺序文件常用得有两种:
·ISAM索引顺序存取方法:就是专为磁盘存取文件设计得,采用静态索引结构。
·VSAM虚拟存储存取方法:采用B+树作为动态索引结构,由索引集、顺序集、数据集组成。
散列文件就是利用散列存储方式组织得文件,亦称为直接存取文件。
散列文件
·优点就是:文件随机存放,记录不需要排序;插入删除方便;存取速度快;不需要索引区,节省存储空间。
·缺点就是:不能进行顺序存取,只能按关键字随机存取,且询问方式限地简单询问,需要重新组织文件。
多重表文件:对需要查询得次关键字建立相应得索引,对相同次关键字得记录建一个链表并将链表头指针、长度、次关键字作为索引表得索引项。
倒排表:次关键字索引表称倒排表,主文件与倒排表构成倒排文件。
高考复习函数知识点总结
高考复习 函数知识点总结 一.函数概念的理解以及函数的三要素 (1)函数的概念 ①设A 、B 是两个非空的数集,如果按照某种对应法则f ,对于集合A 中任何一个数x ,在集合B 中都有唯一确定的数()f x 和它对应,那么这样的对应(包括集合A ,B 以及A 到B 的对应法则f )叫做集合A 到B 的一个函数,记作:f A B →. ②函数的三要素:定义域、值域和对应法则. ③只有定义域相同,且对应法则(函数关系式)也相同的两个函数才是同一函数. (2)区间的概念及表示法 ①设,a b 是两个实数,且a b <,满足a x b ≤≤的实数x 的集合叫做闭区间,记做[,]a b ; 满足a x b <<的实数x 的集合叫做开区间,记做(,)a b ; 满足a x b ≤<,或a x b <≤的实数x 的集合叫做半开半闭区间,分别记做 [,)a b ,(,]a b ; 满足,,,x a x a x b x b ≥>≤<的实数x 的集合分别记做 [,),(,),(,],(,)a a b b +∞+∞-∞-∞. 注意:对于集合{|}x a x b <<与区间(,)a b ,前者a 可以大于或等于b ,而后者必须a b < . (3)求函数的定义域时,一般遵循以下原则: ① 分式的分母不为0; ② 偶次根式下被开方数大于0; ③ 0y x = ,则有0x ≠ ; ④ 对数函数的真数大于0,底数大于0切不等于1 注意:①解析式为整式的函数定义域为R ; ②若()f x 是由有限个基本初等函数的四则运算而合成的函数时,则
其定义域一般是各基本初等函数的定义域的交集; ③对于求复合函数定义域问题,一般步骤是:若已知() f x的定义域 为[,] a g x b ≤≤解出. f g x的定义域应由不等式() a b,其复合函数[()] (4)求函数的值域或最值 常用方法: ①观察法:对于比较简单的函数,我们可以通过观察直接得到值域或最值. ②配方法:将函数解析式化成含有自变量的平方式与常数的和,然后根据变量 的取值范围确定函数的值域或最值. ③判别式法:若函数() =可以化成一个系数含有y的关于x的二次方程 y f x 2 ++=,则在()0 a y x b y x c y ()()()0 a y≠时,由于,x y为实数,故必须有 2()4()()0 ?=-?≥,从而确定函数的值域或最值. b y a y c y ④不等式法:利用基本不等式确定函数的值域或最值. ⑤换元法:通过变量代换达到化繁为简、化难为易的目的,三角代换可将代 数函数的最值问题转化为三角函数的最值问题. ⑥反函数法:利用函数和它的反函数的定义域与值域的互逆关系确定函数的 值域或最值. ⑦数形结合法:利用函数图象或几何方法确定函数的值域或最值. ⑧函数的单调性法. (5)函数解析式 ①换元法;(用于求复合函数的解析式) ②配凑法;(用于求复合函数的解析式)
电路知识点总结
电路知识点总结 初二物理电路的组成知识点总结 1.定义:把电源、用电器、开关、导线连接起来组成的电流的路径。 2.各部分元件的作用:(1)电源:提供电能的装置;(2)用电器:工作的设备;(3)开关:控制用电器或用来接通或断开电路;(4)导线:连接作用,形成让电荷移动的通路 二、电路的状态:通路、开路、短路 以阿拉伯人为主的国家(阿拉伯人占人口多数的国家)被称为阿拉伯国家。西亚是世界 上阿拉伯人的主要聚居地区之一。除了阿富汗、伊朗、土耳其、塞浦路斯、以色列、格鲁 吉亚、亚美尼亚、阿塞拜疆8个国以外,其他国家和地区的居民主要是阿拉伯人,均属于 阿拉伯国家。此外,非洲北部地中海沿岸的埃及、利比亚、突尼斯、阿尔及利亚、摩洛哥 等五个国家也属于阿拉伯国家。 1.定义:(1)通路:处处接通的电路;(2)开路:断开的电路;(3)短路:将导线直接连 接在用电器或电源两端的电路。 2.正确理解通路、开路和短路 三、电路的基本连接方式:串联电路、并联电路 四、电路图(统一符号、横平竖直、简洁美观) 五、电工材料:导体、绝缘体 1. 导体 (1) 定义:容易导电的物体;(2)导体导电的原因:导体中有自由移动的电荷; 2. 绝缘体 (1)定义:不容易导电的物体;(2)原因:缺少自由移动的电荷 六、电流的形成 这句话的问题在于代词使用不一致。请看one must be so dedicated that you will practice six hours a day,前面用的代词是one,但是后文使用的是you,再理解句意,不难发现两个代词其实是在指代同一个人。所以应该把you改成one. 1.电流是电荷定向移动形成的; 由于石油生产、出口是的这些国家成为世界上“最富有的国家”。但经济结构单一, 近几年各国努力促进经济多样化的发展,加强基础设施和城市建设,发展制造业和农业。
最新电流和电路知识点总结经典
最新电流和电路知识点总结经典 一、电流和电路选择题 1.如图所示是一个能吹出冷热风的电吹风简化电路图,图中A是吹风机,B是电热丝.下列分析正确的是() A. 只闭合开关S2,电吹风吹出热风 B. 只闭合开关S1,电吹风吹出冷风 C. 同时闭合开关S1、S2,电吹风吹出冷风 D. 同时闭合开关S1、S2,电吹风吹出热风 【答案】 D 【解析】【解答】开关S2在干路上,S1在B所在的支路. A、只闭合开关S2时,电热丝所在支路的开关是断开的,电热丝不工作,只有吹风机接入电路,吹出冷风,A不符合题意; B、此时干路开关S2是断开的,电路没有接通,所有用电器都不工作,B不符合题意; C、同时闭合开关S1、S2时,电热丝与吹风机并联接入电路,同时工作,吹出热风,C不符合题意,D符合题意. 故答案为:D. 【分析】根据电路的工作状态,电路并联,且电热丝有开关,并联时同时工作. 2.在图所示的实物电路中,当开关闭合时,甲电流表的示数为0.5 A,乙电流表的示数为0.2 A,则下列判断正确的是() A. 通过灯L1的电流为0.5 A B. 通过灯L1的电流为0.3 A C. 通过灯L2的电流为0.7 A D. 通过灯L2的电流为0.3 A 【答案】 B 【解析】【解答】由图示可知,两个灯泡是并联的,电流表甲测干路的电流为0.5A,电流表乙测通过灯泡L2的电流为0.2A,根据并联电路中电流的特点可知,通过灯泡L1的电流为0.5A-0.2A=0.3A,B符合题意. 故答案为:B。
【分析】首先判断电流表所测量的位置,根据并联电路中的干路电流和各支路电流的关系分析各支路电流。 3.汽车的手动刹车器(简称“手刹”)在拉起时处于刹车制动状态,放下时处于解除刹车状态。如果手刹处在拉爆状态,汽车也能运动,但时间长了会损坏刹车片,有一款汽车设计了一个提醒司机的电路;汽车启动,开关S1闭合,手刹拉起,开关S2闭合,仪表盘上的指示灯会亮;汽车不启动,开关S1断开,指示灯熄灭,或者放下手刹,开关S2断开,指示灯也熄灭,下列电路图符合上述设计要求的是() A. B. C. D. 【答案】 A 【解析】【解答】根据用电器的工作要求,当开关都闭合时用电器才能工作,所以电路是串联电路,A符合题意。 故答案为:A. 【分析】串联电路的特点是各用电器互相影响。 4.有一个看不见内部情况的小盒(如图所示),盒上有两只灯泡,由一个开关控制,闭合开关两灯都亮,断开开关两灯都灭;拧下其中任一灯泡,另一灯都亮。选项所示的图中符合要求的电路图是() A. B.
人教版高一数学必修一第一章 集合与函数概念知识点
高一数学必修1各章知识点总结 第一章集合与函数概念 一、集合有关概念 1.集合的含义 2.集合的中元素的三个特性: (1)元素的确定性如:世界上最高的山 (2)元素的互异性如:由HAPPY的字母组成的集合{H,A,P,Y} (3)元素的无序性: 如:{a,b,c}和{a,c,b}是表示同一个集合3.集合的表示:{ … } 如:{我校的篮球队员},{太平洋,大西 洋,印度洋,北冰洋} (1)用拉丁字母表示集合:A={我校的篮球队员},B={1,2,3,4,5} (2)集合的表示方法:列举法与描述法。 ◆注意:常用数集及其记法: 非负整数集(即自然数集)记作:N 正整数集 N*或 N+ 整数集Z 有理数集Q 实数集R 1)列举法:{a,b,c……} 2)描述法:将集合中的元素的公共属性描述出来,写在大括号内表示集合的方法。{x∈R| x-3>2} ,{x| x-3>2} 3)语言描述法:例:{不是直角三角形的三角形} 4)Venn图: 4、集合的分类: (1)有限集含有有限个元素的集合 (2)无限集含有无限个元素的集合 (3)空集不含任何元素的集合例:{x|x2=-5} 二、集合间的基本关系 1.“包含”关系—子集 A?有两种可能(1)A是B的一部分,;(2)A与B是注意:B 同一集合。 ?/B 反之: 集合A不包含于集合B,或集合B不包含集合A,记作A ?/A 或B 2.“相等”关系:A=B (5≥5,且5≤5,则5=5) 实例:设 A={x|x2-1=0} B={-1,1} “元素相同则两集合相等” 即:①任何一个集合是它本身的子集。A?A ②真子集:如果A?B,且A≠ B那就说集合A是集合B的真子集,记作A B(或B A) ③如果 A?B, B?C ,那么 A?C ④如果A?B 同时 B?A 那么A=B 3. 不含任何元素的集合叫做空集,记为Φ 规定: 空集是任何集合的子集,空集是任何非空集合的真子集。 ◆有n个元素的集合,含有2n个子集,2n-1个真子集
结构动力学心得汇总
结构动力学学习总结
通过对本课程的学习,感受颇深。我谈一下自己对这门课的理解: 一.结构动力学的基本概念和研究内容 随着经济的飞速发展,工程界对结构系统进行动力分析的要求日益提高。我国是个多地震的国家,保证多荷载作用下结构的安全、经济适用,是我们结构工程专业人员的基本任务。结构动力学研究结构系统在动力荷载作用下的位移和应力的分析原理和计算方法。它是振动力学的理论和方法在一些复杂工程问题中的综合应用和发展,是以改善结构系统在动力环境中的安全和可靠性为目的的。高老师讲课认真负责,结合实例,提高了教学效率,也便于我们学生寻找事物的内在联系。这门课的主要内容包括运动方程的建立、单自
由度体系、多自由度体系、无限自由度体系的动力学问题、随机振动、结构抗震计算及结构动力学的前沿研究课题。既有线性系统的计算,又有非线性系统的计算;既有确定性荷载作用下结构动力影响的计算,又有随机荷载作用下结构动力影响的随机振动问题;阻尼理论既有粘性阻尼计算,又有滞变阻尼、摩擦阻尼的计算,对结构工程最为突出的地震影响。 二.动力分析及荷载计算 1.动力计算的特点 动力荷载或动荷载是指荷载的大小、方向和作用位置随时间而变化的荷载。如果从荷载本身性质来看,绝大多数实际荷载都应属于动荷载。但是,如果荷载随时间变化得很慢,荷载对结构产生的影响与
静荷载相比相差甚微,这种荷载计算下的结构计算问题仍可以简化为静荷载作用下的结构计算问题。如果荷载不仅随时间变化,而且变化很快,荷载对结构产生的影响与静荷载相比相差较大,这种荷载作用下的结构计算问题就属于动力计算问题。 荷载变化的快与慢是相对与结构的固有周期而言的,确定一种随时间变化的荷载是否为动荷载,须将其本身的特征和结构的动力特性结合起来考虑才能决定。 在结构动力计算中,由于荷载时时间的函数,结构的影响也应是时间的函数。另外,结构中的内力不仅要平衡动力荷载,而且要平衡由于结构的变形加速度所引起的惯性力。结构的动力方程中除了动力荷载和弹簧力之外,还要引入因其质量产生的惯性力和耗散能量的阻尼力。而
大学电路知识点总结
大学电路知识点总结 【篇一:大学电路知识点总结】 电路理论总结 第一章 一、重点: 1、电流和电压的参考方向 2、电功率的定义:吸收、释放功率的计算 3、电路元件:电阻、电感、电容 4、基尔霍夫定律 5、电源元件 二、电流和电压的参考方向: 1、电流(current) : i ①符号 :i ②计算公式 i(t)?dq(t)/dt a、说明:电流的参考方向是人为假定的电流方向,与实际 电流方向无关,当实际电流方向与参考方向一致时电流取正,相反地,当实际电流方向与参考方向不一致时电流取负。 b、表示方法:在导线上标示箭头或用下标表示 c、例如: 参考方向(iab) ———— ———— 实际方向 实际方向 i 0 2、电压(voltage) ①符号:u ②计算公式: i 0 u=dw/dq 荷从一点移动到另一点所做的功的大小。 ③定义:两点间的电位(需确定零电位点?)差,即将单位正电 ④单位:伏特v 1v=1j/1c a、说明:电压的实际方向是指向电位降低的方向,电压的 参考方向是人为假定的,与实际方向无关。若参考方向与实际方向一致则电压取正,反之取负。 b、表示方法:用正极性(+)表示高电位,用负极性(-)
表示低电位,则人为标定后,从正极指向负极的方向即为电压的参 考方向或用下标表示(uab)。 c、例如: 参考方向参考方向 i u 实际方向 – + i 实际方向 – + + u 0 3、关联与非关联参考方向 u 0 ①说明:一个元件的电流或电压的参考方向可以独立的任意的 人为指定。无论是关联还是非关联参考方向,对实际方向都无影响。 ②关联参考方向:电流和电压的参考方向一致,即电流从 所标的正极流出。 非关联参考方向:电流和电压的参考方向不一致。 ③例如: r i r i + u 关联参考方向 u 非关联参考方向 u=ir 三、电功率 1、符号:p 2、计算公式: u=-ir 4、相关习题:课件上的例题,1-1,1-2,1-7 dwp??ui dt
电流和电路知识点总结
电流和电路 、电荷 1、物体有了吸引轻小物体的性质,我们就说物体带了电荷;换句话说,带电体具有吸引轻小物体的 性质。 2、用摩擦的方法使物体带电叫摩擦起电; 3、摩擦起电的实质:摩擦起电并不是创生了电,而是电子从一个物体转移到了另一个物体,失去电 子的带正电;得到电子的带负电。 二、两种电荷: 1、把用丝绸摩擦过的玻璃棒带的电荷叫正电荷:电子从玻璃棒转移到丝绸。 2、把用毛皮摩擦过的橡胶棒带的电荷叫负电荷:电子从毛皮转移到橡胶棒。 3、基本性质:同种电荷相互排斥,异种电荷相互吸引; 4、带电体排斥带同种电荷的物体;带电体吸引带异种电荷的物体和轻小物体。 例:1、A带正电,A排斥B , B肯定带正电; 2、A带正电,A吸引B , B可能带负电也可能不带电。(A、B都是轻小物体) 三、验电器 1、用途:用来检验物体是否带电;从验电器张角的大小,可以粗略的判断带电体所带电荷的多少。 2、原理:利用同种电荷相互排斥; 四、电荷量(电荷)电荷的多少叫电荷量,简称电荷;单位:库仑(C)简称库; 五、原子的结构质子(带正电) 「原子核< 原』I中子(不带电) 电子(带负电) 原子核所带的正电荷与核外所有电子总共带的负电荷数在数量上相等,整个院子呈中性,原子对外不显带电的性质。 六、元电荷 1、最小的电荷叫做元电荷,用符号e表示,e=1.6*10-19C。 2、电子电荷量的大小是最小的。 七、导体、绝缘体 1、善于导电的物体叫导体:如:金属、人体、大地、石墨、酸碱盐溶液; 2、不善于导电的物体叫绝缘体.如:橡胶、玻璃、塑料、陶瓷、油、空气等; 3、导体和绝缘体在一定条件下可以相互转换; 例如:1、干木头(绝缘体)、湿木头(导体)2、玻璃通常是绝缘体、加热到红炽状态(导体)。