![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
DataStructure+Algorithm(程序的灵魂)
骑在木马上的黑客
纵有疾风起,人生不言弃!
展开
-
最大堆实现的优先队列
//声明文件class CPriorityQueueByMaxHeap{private: int* pArr; int nHeapSize;private: void MaxHeapify(int root);public: CPriorityQueueByMaxHeap(); CPriorityQueueByMaxHeap(int* arr, int len); ~CPrior...原创 2018-04-22 08:09:59 · 437 阅读 · 0 评论 -
C++实现的环形队列
一、队列的定义队列是一种特殊的线性表,线性表两端都可以进行插入删除,而队列只能在队头删除,队尾插入。插入元素称为入队,删除元素称为出队。特点:1、队列只允许在队头插入,队尾删除;2、先入队的元素在对头,后入队的元素在队尾;3、队列遵循“先进先出”的原则。图示: (1)普通队列(2)环形队列二、存储结构及实现#include<stdio.h>#include<stdlib.h&...原创 2018-04-23 10:10:03 · 3348 阅读 · 1 评论 -
操作系统PageIn、PageOut所用到的LRU策略(原理+实现)
一、什么是LRU缓存策略 LRU(Least Recently Used)近期最少使用算法。它的原理就是,缓存一定量的数据,当缓存数量超过设置的阈值时就删除一部分旧的数据。 那么我们怎样判定旧数据呢???根据局部性原理,距离当前最久没有被访问过的数据应该被淘汰。二、LRU缓存策略实现原理 1、使用双向链表记录数据的被使用的时间 因为我们要删除最久没有被访问的数据,为了...原创 2018-04-27 12:14:56 · 2098 阅读 · 0 评论 -
时间复杂度和空间复杂度
时间复杂度: 一般情况下,算法中基本操作重复执行的次数是问题规模n的某个函数f(n),进而分析f(n)随n的变化情况并确定T(n)的数量级。这里用"O"来表示数量级,给出算法的时间复杂度。 T(n)=O(f(n)); 它表示随着问题规模的n的增大,算法的执行时间的增长率和f(n)的增长率相同,这称作算法的渐进时间复杂度,简称时间复杂度。而我们一般讨论的是...原创 2018-05-18 12:48:18 · 295 阅读 · 0 评论