自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(13)
  • 收藏
  • 关注

原创 快速排序(交换)

基本思想首先选一个轴值(即比较的基准),通过一趟排序将待排序记录分割成独立的两部分,前一部分记录的关键码均小于或等于轴值,后一部分记录的关键码均大于或等于轴值,然后分别对这两部分重复上述方法,直到整个序列有序。关键问题⑴如何选择轴值?⑵如何实现分割(称一次划分)?⑶如何处理分割得到的两个待排序子序列?⑷如何判别快速排序的结束?(1)解决方法:轴值可以取记录中的任意值,一般取...

2019-12-25 21:24:12 434

原创 冒泡排序

基本思想两两比较相邻记录的关键码,如果反序则交换,直到没有反序的记录为止。关键问题⑴ 在一趟起泡排序中,若有多个记录位于最终位置,应如何记载?⑵ 如何确定起泡排序的范围,使得已经位于最终位置的记录不参与下一趟排序?⑶ 如何判别起泡排序的结束?(1)解决方法:设变量exchange记载记录交换的位置,则一趟排序后,exchange记载的一定是这一趟排序中记录的最后一次交换的位置,且从此...

2019-12-25 21:03:09 153

原创 希尔排序

基本思想1、将整个待排序记录分割成若干个子序列,2、在子序列内分别进行直接插入排序,3、待整个序列中的记录基本有序时,对全体记录进行直接插入排序。关键问题1、分割待排序记录的目的是:1、减少待排序记录数目。2、使序列向基本有序发展。2、如何分割? 子序列的构成不能是简单地“逐段分割”,而是将相距某个“增量”的记录组成一个子序列。(1)分割解决方法:将相隔某个“增量”的记录组成一个子...

2019-12-25 20:35:52 111

原创 直接插入排序

基本思想在插入第 i(i>1)个记录时,前面的 i-1个记录已经排好序。直接插入排序算法是一种稳定的排序算法。需要解决的问题?(1)如何构造初始的有序序列?(2)如何查找待插入记录的插入位置?(1)如何构造初始的有序序列?解决方法:将第1个记录看成是初始有序表,然后从第2个记录起依次插入到这个有序表中,直到将第n个记录插入。算法描述:for (i=2; i<=n; i++...

2019-12-23 22:05:37 177

原创 平衡二叉树

定义平衡二叉树:或者是一棵空的二叉排序树,或者是具有下列性质的二叉排序树:⑴ 根结点的左子树和右子树的深度最多相差1;⑵ 根结点的左子树和右子树也都是平衡二叉树。平衡因子: 结点的平衡因子是该结点的左子树的深度与右子树的深度之差。结点的平衡因子=HL-HR在平衡树中,结点的平衡因子可以是1,0,-1。最小不平衡子树: 在平衡二叉树的构造过程中,以距离插入结点最近的、且平衡因子的绝对值...

2019-12-16 20:17:08 85

原创 二叉排序树

定义二叉排序树(也称二叉查找树):或者是一棵空的二叉树,或者是具有下列性质的二叉树:⑴若它的左子树不空,则左子树上所有结点的值均小于根结点的值;⑵若它的右子树不空,则右子树上所有结点的值均大于根结点的值;⑶ 它的左右子树也都是二叉排序树。中序遍历二叉排序树可以得到一个按关键码有序的序列二叉排序树的插入分析:若二叉排序树为空树,则新插入的结点为新的根结点;否则,如果插入的值比根节点值...

2019-12-16 19:52:13 282

原创 折半查找(二分查找)

1.适用条件线性表中的记录必须按关键码有序;必须采用顺序存储。2.折半查找(二分查找)具体实现基本思想:在有序的线性表中,取中间位置的数作为比较对象。若给定值与中间记录的值相等,则查找成功;若给定值小于中间记录的值,则在中间记录的左边继续查找;若给定值大于中间记录的值,则在中间记录的右边继续查找;不断重复上述过程,直到查找成功,或所查找的区域无记录,查找失败。int Searc...

2019-12-16 19:27:00 1180

原创 顺序查找

1.顺序查找优缺点优点:算法简单而且使用面广。对表中记录的存储结构没有任何要求,顺序存储和链式存储均可;对表中记录的有序性也没有要求,无论记录是否按关键码有序均可。缺点:平均查找长度较大,特别是当待查找集合中元素较多时,查找效率较低。2.顺序查找具体实现基本思想:用线性表来存储数据,从线性表的一端到另一端进行逐个比较,若找到要求值,查找成功,给出该记录在表中的位置。若始终无相等的...

2019-12-16 18:57:55 2920

原创 关键路径和AOE网

AOE网的定义在一个表示工程的带权有向图中,用顶点表示事件,用有向边表示活动,边上的权值表示活动的持续时间,称这样的有向图叫做边表示活动的网,简称AOE网。AOE网中没有入边的顶点称为始点(或源点),没有出边的顶点称为终点(或汇点)。AOE网的性质⑴ 只有在某顶点所代表的事件发生后,从该顶点出发的各活动才能开始;⑵ 只有在进入某顶点的各活动都结束,该顶点所代表的事件才能发生。A...

2019-12-09 20:24:39 655

原创 图的最短路径(Dijkstra方法和Floyed方法)

什么是最短路径?1、在非网图中,两顶点之间经过顶点最少的路径,就是最短路径。2、在网图中,两点之间经过的权值之和最小的路经。最短路径问题的解决方法Dijkstra方法(单源点到其他顶点的最短路径)Floyed方法 (任意两点之间的最短路径)1.Dijkstra方法算法思想:1.设置一个集合S存放已经找到最短路径的顶点,初始值为单源点(起始点)。2.以后每求得一条最短路径v, …...

2019-12-02 19:53:58 416

原创 最小生成树(Prim算法和Kruskal算法)

什么是最小生成树?生成树的代价: 设G=(V,E)是一个无向连通网,生成树上各边的权值之和叫做该生成树的代价。最小生成树: 图G的所有生成树中,代价最小的生成树,叫做最小生成树。构造最小生成树的算法1.Prim算法(加点法)2.Kruskal算法(加边法)1.Prim算法基本思想:1、创建一个顶点集合U,和一个边集合TE。2、若从u开始,则将u放入U中,V总顶点集合则少一个u,...

2019-12-01 20:56:40 700

原创 图的遍历——深度和广度

深度优先遍历深度优先遍历就是从一个顶点开始,顺着一条边,依次访问连接着的顶点。直到顶点全部访问完毕结束。操作思路:1、用一个一维数组表示该点是否被访问(存储0和1,0代表没访问,1代表访问完了)。2、利用递归的方法,输出该节点数据,修改一维数组(0变成1),for循环,进行下一个节点,一直到全部访问完成(测试有没有访问的数组里都是1);上代码这是用邻接矩阵(静态存储)存的图的深度遍历...

2019-12-01 19:26:13 176

原创 图的存储方法——邻接表(动态存储)

基本思想:1.每一个顶点都可以引出一条单链表。(对于每一个顶点vi,将所有邻接于vi的顶点连接成为一个单链表,称为顶点vi的边表。)用来存储边的2.所有边表的头指针和存储顶点信息的一维数组,构成了顶点表两种节点结构vertex:数据域,储存顶点信息。firstedge:指针域,指向下一个邻接的顶点。adjvex:邻接点域,边的终点再顶点表中的下标。next:指针域,边表的下一个节点...

2019-12-01 14:47:48 342

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除