摘要: 【1】希尔排序可以说是对插入排序的优化,所以又可以称希尔排序为分组插入排序; 【2】插入排序速度快是在数据量较小且基本有序俩个条件下有效,如果数据过长且基本无序,采用希尔排序将其分解成若干组,分别做插入排序。 核心代码: 1 void ShellSort(int* arr, int length) 阅读全文
posted @ 2020-05-29 21:00 每天都要吃早饭 阅读(411) 评论(0) 推荐(0) 编辑
摘要: 做法;将无序序列插入到有序序列中; 结论:插入排序在什么情况下效率高: 【1】如果序列基本有序的情况下【2】插入排序时候数据序列比较少。 例子: 3 1 4 2 5 共五个数字. length=5; 【1】第一步先将序列分为有序序列和无序序列 有序:3 无序:1 4 2 5 【2】将无序序列插入到有 阅读全文
posted @ 2020-05-28 15:25 每天都要吃早饭 阅读(210) 评论(0) 推荐(0) 编辑
摘要: 冒泡缺点是每次进入if语句后紧跟着就会发生swap交换,在这个交换的过程中会消耗时间,选择排序在每一轮外循环内最多进行一次swap循环; 选择排序 和 优化版的冒泡比较: 1 #include<iostream> 2 #include<time.h> 3 #include<stdlib.h> 4 # 阅读全文
posted @ 2020-05-28 10:08 每天都要吃早饭 阅读(141) 评论(0) 推荐(0) 编辑
摘要: 参考上一篇冒泡排序后 然后稍微改了一下,速度提高的不多。 1 //在传统冒泡中,每一轮外循环都会导致将该循环中最大的数沉底,会导致内循环从0到最后一个数之间 2 //每俩个数俩俩比较,如果在某一趟外循环中,内循环的Swap()函数没有执行过一次,那就代表此时从前 3 //到最后已经是有序的了,此时直 阅读全文
posted @ 2020-05-27 21:34 每天都要吃早饭 阅读(172) 评论(0) 推荐(0) 编辑
摘要: 经典冒泡排序: 思想:俩俩比较,如果是实现升序排序,则俩俩排序的目的就是将其中大的数依次往后挪,或者是将较小的数往前挪; 每一趟外循环的目的就是将这一趟中最大的数放在数组的最后面,或者是将最小的数放在最前面。 例如:3 4 2 5 0 1 六个数,我们采用大数沉底的方法。 【1】先说外循环:即趟数 阅读全文
posted @ 2020-05-26 19:39 每天都要吃早饭 阅读(555) 评论(0) 推荐(0) 编辑
摘要: 思考:根据中序遍历的结果能创建一颗树吗? 例如:中序遍历结果为:12345 ;这个123456能确定一颗树吗? 答案:不能。 所以如何才能确定一棵树? 结论:【1】通过中序遍历和先序遍历可以确定一个树; 【2】通过中序遍历和后续遍历可以确定一棵树; 【3】通过先序遍历和后续遍历确定不了一棵树。 注意 阅读全文
posted @ 2020-05-25 13:15 每天都要吃早饭 阅读(597) 评论(0) 推荐(0) 编辑
摘要: 条件:【1】需要将原来树的节点重新封装,封装后的结构中具有对原来树节点的一个flag描述; 【2】利用STL中的栈容器实现对节点的入栈以及出栈操作; 拿下图为例: 注意:该段代码实现的是前序遍历,如果想要实现中序/后序遍历 只需将第48-49行代码与前俩行代码调换位置即可。该段代码没有对new过的节 阅读全文
posted @ 2020-05-24 15:56 每天都要吃早饭 阅读(505) 评论(0) 推荐(0) 编辑
摘要: 进程互斥的解决方案 硬件实现方法:中断屏蔽方法、TS/TSL指令、Swap/XCHG指令。 软件实现方法:单标志法、双标志先检查、双标志后检查、Peterson算法。 各种解决方案存在的问题: 例如:1.在双标志先检查方法中,进入区的“检查”、”上锁“ 操作无法一气呵成,从而导致俩个进程有可能同时进 阅读全文
posted @ 2020-05-23 21:26 每天都要吃早饭 阅读(3740) 评论(0) 推荐(0) 编辑
摘要: 【1】单标志法: 缺点: turn 表示当前允许进入临界区的进程号,而只有当前允许进入临界区的进程在访问了临界区之后,才会修改turn的值。也就是说,对于临界区的访问,一定是P0->P1->P0->P1......这样轮流访问。这种必须“轮流访问”带来的问题是,如果此时允许进入临界区的进程是P0,而 阅读全文
posted @ 2020-05-23 20:40 每天都要吃早饭 阅读(537) 评论(0) 推荐(0) 编辑
摘要: 使用该图例:并将以先序遍历的结果打印 原二叉树和拷贝后的二叉树 该图例先序遍历结果为:A B C D E F G H 直接上代码: 1 #include<iostream> 2 using namespace std; 3 4 //二叉树节点 5 struct BinaryNode 6 { 7 ch 阅读全文
posted @ 2020-05-23 16:49 每天都要吃早饭 阅读(1075) 评论(0) 推荐(0) 编辑