- 博客(4)
- 收藏
- 关注
原创 归并排序分析与代码实现
基本思路 1 正向思维 2 逆向思维 代码实现 复杂度分析 1. 基本思路1.1 正向思维假设现在有两个已经按升序顺序排好序的数组A[lo,mi]和A[mi+1,hi]。我们可以按以下方法将这两个数组合并成一个按升序排序的新数组A[lo,hi]。 初始时,我们另i = lo, j = mi+1,这样我们可以写出合并步骤的伪代码描述:while(true) { if(A[i] > A[j])
2015-10-27 12:40:06
371
原创 排序算法之快速排序
排序算法之快速排序参考过以下博客,在此表示感谢: 1. 白话经典算法系列之六 快速排序 快速搞定 2. 坐在马桶上看算法:快速排序1. 基本思路(挖坑填数 + 分而治之) 1.1 从数组A中取出一个数作为基准数,比如说取A[0],将A[0]保存到x中,这时可以看作已经在元素A[0]处挖了一个坑,可以将其他数据填充到这里来。初始化,i = 0(left),j = 9(right),x = A
2015-10-25 16:30:21
457
原创 Linux 0.11下信号量的实现和应用
Linux 0.11下信号量的实现和应用1.生产者-消费者问题从一个实际的问题:生产者与消费者出发,谈一谈为什么要有信号量?信号量用来做什么? 问题描述:现在存在一个文件”.\buffer.txt”作为一个共享缓冲区,缓冲区同时最多只能保存10个数。现有一个生产者进程,依次向缓冲区写入整数0,1,2,……,M,M>=500;有N个消费者进程,消费者进程从缓冲区读数,每次读一个,并将读出的数从缓冲
2015-07-14 17:16:07
2343
原创 在Linux-0.11中实现基于内核栈切换的进程切换
原有的基于TSS的任务切换的不足 进程切换的六段论 1 中断进入内核 2 找到当前进程的PCB和新进程的PCB 3 完成PCB的切换 4 根据PCB完成内核栈的切换 5 切换运行资源LDT1. 原有的基于TSS的任务切换的不足 原有的Linux 0.11采用基于TSS和一条指令,虽然简单,但这指令的执行时间却很长,在实现任务切换时大概需要200多个时钟周期。而通过堆栈实现任务切换可能要快,而且采
2015-06-28 11:42:15
1868
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人