自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 CSAPP:malloclab (显式空闲链表 LIFO+首次适配)

建议先学会书本的隐式空闲链表, 再学此显式空闲链表显式空闲链表(双向空闲链表)的堆块格式使用显式空闲链表使得首次适配的分配时间从块总数(n)的线性时间减少到了空闲块数量(m)的线性时间:O(m) < O(n),其中m < n。释放块和合并块与隐式空闲链表一样都是O(1)。显示空闲链表的格式宏marco#define WSIZE 4#define DSIZE 8#define CHUNKSIZE (1 << 12)#define MAX(x, y) ((x) &g

2021-04-28 23:14:34 3081 1

原创 【堆合并】左式堆

左式堆定义:左式堆具有与二叉堆一样的堆序性质,但它不是理想平衡的二叉树。性质:对于堆中的每一个节点X,左儿子的Npl至少与右儿子的Npl一样大,即Npl(左儿子) >= Npl(右儿子)。 (Npl: 任一节点X的零路径长Npl(X)定义为从X到一个没有两个儿子的节点的最短路径的长。)堆结构及函数声明typedef struct LeftHeap *Lefh;Lefh Merge_node(Lefh, Lefh); // 驱动Mergestatic Lefh Merge(Lefh

2020-11-24 21:55:58 949

原创 【O(N)】生成N个不重复自然数的随机置换

例如,生成{4,3,1,5,2}或者{3,1,4,2,5}是合法置换,但{5,4,1,2,1}却不是,因为1重复出现而3未出现前提:假设存在一个随机数生成器RandInt(i, j),它以相同的概率生成i 和 j之间的一个整数O(N) 算法① 为该数组赋值使得A[i] = i + 1②for (int i = 1; i < N; i ++) swap(&A[i], &A[RandInt(0, i)]);若使用循环来判断重复,则时间复杂度是O(N^2logN)

2020-10-26 16:46:39 288

原创 数组模拟链表

优点高效:插入、删除操作十分简便,不需要像指针链表一样遍历**声明变量head:头节点e[i]:节点i的数值 ne[i]:节点i的next指针idx:存储当前用到了几个节点int head, e[N], ne[N], idx;**初始化void init(){ head = -1; // 指针值为1,表示到了链表末尾,无节点 idx = 1; // idx = 1表示第一个节点的下标为1}**向表头插入数void head_to_inst(int x)

2020-10-07 18:46:05 128

原创 【快速排序】递归与非递归

递归写法1.以中间值作为基准数void quick_sort(int q[], int l, int r){ if (l >= r) return ; // 必须有等于条件 int x = q[(l + r) / 2], i = l - 1, j = r + 1; while(i < j) { do ++ i; while(q[i] < x); // 不可 <= do -- j; while(q[j

2020-10-06 20:14:46 100

空空如也

空空如也

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

TA关注的人

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