摘要: 1.背景 1.1 基本硬件 Q1:如何确保每个进程有独立的内存空间,确定进程可访问的合法地址的范围? A1:采用基地址寄存器和界限地址寄存器。基地址寄存器含有最小的合法物理内存地址,界限地址寄存器决定范围大小。如基地址寄存器为300040,界限地址寄存器为120900,则程序可访问地址范围为3000 阅读全文
posted @ 2018-07-29 13:14 花花与小叮当 阅读(354) 评论(0) 推荐(0) 编辑
摘要: 第一章 1.2 按位运算符:& 逻辑运算符:&& 1.3 单字符符号:只有一个字符长 多字符符号:含多个字符 贪心法,大嘴法:一个字符一个字符读入,如果该字符可能组成一个符号,那么再读下一个字符,判断已经读入的两个字符组成的字符串能否组成一个(多字符)符号的一部分,如果可以,继续读下一个字符,重复上 阅读全文
posted @ 2018-07-28 23:04 花花与小叮当 阅读(190) 评论(0) 推荐(0) 编辑
摘要: 来源于《数据结构与算法分析:C语言描述》 def1:如果存在正常数c和n0,使得当N>=n0时,T(N)<=cf(N),则记为T(N) = O(f(N)); T(N)的增长率小于等于f(N)的增长率 def2:如果存在正常数c和n0,使得当N>=n0时,T(N)>=cg(N),则记为T(N) = Ω 阅读全文
posted @ 2018-07-28 19:42 花花与小叮当 阅读(173) 评论(0) 推荐(0) 编辑
摘要: 8月28日看了MIT算法的归并排序 对“并”进行代码优化 优化归并排序: 一、考虑为何归并排序不适合特别小的数组? 因为申请额外空间,还会增加调用函数开销。而和插入排序比较而言,由于数组规模特别小,时间上并无太大差别。 因此改进方法就是进行切分。对于小于某个数组规模的数组进行插入排序。见代码 二、假 阅读全文
posted @ 2018-07-28 19:26 花花与小叮当 阅读(154) 评论(0) 推荐(0) 编辑
摘要: 挖坑填数法+分治法(从别人的博客借鉴得到) 复杂度:O(nlogn)。 T(n) = 2T(n/2) + θ(n) (递归加一次遍历) 有主定理(见另外一篇随笔)得:O(nlogn)。 稳定性:不稳定,原因如下: 举个例子:待排序数组:int a[] ={1, 2, 2, 3, 4, 5, 6}; 阅读全文
posted @ 2018-07-28 15:41 花花与小叮当 阅读(161) 评论(0) 推荐(0) 编辑
摘要: 一张图表示非递归遍历的实质: 我们如何找到左子树,因为我们先访问根节点,所以根据根节点中保存的左子树的地址,可以向左下访问。 那左子树访问完了,如何回来访问右子树呢? 这就是栈的作用!!!! 栈顶保存着上一次最后遇到的根节点,把栈顶元素弹出,则可以“往回走”,借此可以访问右子树。 阅读全文
posted @ 2018-07-28 14:57 花花与小叮当 阅读(221) 评论(0) 推荐(0) 编辑
摘要: 复杂度:因为两层for循环嵌套,故为O(n^2); 稳定性:稳定。因为a[j]>tmp,即只有比tmp大的才往后移动,和他相等并不往后移动。 阅读全文
posted @ 2018-07-26 22:46 花花与小叮当 阅读(114) 评论(0) 推荐(0) 编辑
摘要: //冒泡排序1 最普通 //冒泡排序2 设置标志位 复杂度计算: 因为由两个for循环嵌套而得,故为O(n^2); 稳定性:稳定。因为当相邻两个数相等时,并不交换顺序,故二者前后顺序不变。 //冒泡排序3 假设a[100],仅前10个无序,后90个已经排好序,则只需要冒泡前10个//需要我们记录好位 阅读全文
posted @ 2018-07-26 21:26 花花与小叮当 阅读(119) 评论(0) 推荐(0) 编辑
摘要: 转载自:https://blog.csdn.net/gzg1500521074/article/details/50444845 阅读全文
posted @ 2018-06-07 23:54 花花与小叮当 阅读(88) 评论(0) 推荐(0) 编辑
摘要: 阅读全文
posted @ 2018-06-06 14:17 花花与小叮当 阅读(162) 评论(0) 推荐(0) 编辑