ddddfang's Blog.

ddddfang's Blog.

it's better to burn out than to fade away

max-heap
1. 概述: 最大堆(大顶堆)一句话 heap:一种数据结构,完全二叉树(若二叉树高 h,则除过最底层 h 层,其他 1~h-1 层都是满的;并且最底层从左到右不能有空隙)。有最大堆和最小堆两种,最大堆即根节点的键值比其他所有节点键值都大;最小堆即根节点的键值比其他所有节点键值都小。在实现上,它没有选择一般的二叉树数据结构(即一个节点包含指向两个孩子的指针),使用的是数组;heap 最为常用的操作是上溯和下溯,在“维持堆”和“堆排序”中经常用到。 最小堆和最大堆思路如出一辙,只讨论最大堆。对于一个大顶堆,如下结论成立: 数组从 index为 1 的地方开始存放第一个节点: 第 i ...
hash-table
1. 概述A hash table consists of an array of ‘buckets’(吊桶), each of which stores a key-value pair. In order to locate the bucket where a key-value pair should be stored, the key is passed through a hashing function. This function returns an integer which is used as the pair’s index in the array of b...
binary-search
二分查找(注意二分查找的前提是: 这个数组是有序的~): 12345678910111213141516171819202122232425262728#include <stdio.h>#include <stdlib.h>#include <string.h>int binary_search(int* a, int len, int goal, int left) //left代表若查到多个目标,是否需要返回最左边的那个{ int low = 0; int high = len -1; int lastPos =...
bit-set
如何实现简单的位数组(bit array) ref以下摘自 How can I implement sets or arrays of bits?,仅使用几个简单的宏就实现了一个基本的位数组(bitset,又名 bitmap) 1234567891011121314151617181920#include <limits.h> /* for CHAR_BIT *///CHAR_BIT is the number of bits in char,almost all architectures//use 8 bits per byte but it is not ...
gitbook
https://blog.csdn.net/lu_embedded/article/details/81100704 http://gitbook.zhangjikai.com/themes.html https://www.jianshu.com/p/421cc442f06c
rb-tree
1. 介绍Key-value 键值对貌似有用红黑书实现的(或者使用hash表实现,二者各有优劣),关于红黑树的详细介绍可以参看 http://blog.csdn.net/v_JULY_v/article/details/6105630 红黑树必须满足的规则: 所有节点都有颜色,要么红色,要么黑色 根节点是黑色,所有叶子节点也是黑色 叶子节点中不包含数据 非叶子节点都有2个子节点 如果一个节点是红色,那么它的父节点和子节点都是黑色的(黑节点无此要求!) 从任何一个节点开始,到其下叶子节点的路径中都包含相同数目的黑节点 根据规则,可以知道: 红黑树中最长的路径就是红黑交替的路径,最短...
list
list.h这个list.h其实是linux内核中链表实现的精简版(只需要一个头文件),linux提供的这套接口更像是构造list的零部件。用户可以选择直接用它定制化自己的 list型数据结构,甚至可以实现一个更为 高层次的、通用的 list接口(如下面的clist) 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858...
sort-related
快速排序中的核心函数123456789101112131415161718192021222324252627int Partition(int a[], int start, int end) //返回调整后基准数的位置(也就是它在最终排序数组中的位置){ int i = start, j = end; int x = a[i]; //a[i]就是第一个坑,这里可以先安排一个a[i] <---> a[randint(start,end)] while (i < j) { // 坑在左边,那就先从右向左找小于x的...
docker-apps
搭建一个个人博客:https://www.jianshu.com/p/3c6c9d964cb4docker run –name mysql-01 -p 3307:3306 -e MYSQL_ROOT_PASSWORD=123 -d mysqldocker run –name wp -p 80:80 –link mysql-01:mysql -d wordpress然后 ifconfig 查看下本机的ip(或者直接用127.0.0.1也可),然后打开浏览器输入 :80 即可看到wordpress的安装界面,设置完成用户名和密码即可进入posts–>add new 就是发布新文章(因为...
printf-可变参数
12345typedef char *va_list; //va_list就是个普通的指向char类型的指针而已#define _INTSIZEOF(n) ( (sizeof(n)+sizeof(int)-1)& ~(sizeof(int)-1) ) //这是获取某个类型的长度,并按照int长度为边界对齐,不足4bytes补足,因为栈宽度为4bytes#define va_start(ap,v) (ap=(va_list)&v + _INTSIZEOF(v)) //这就是使ap指向v的以int长度为边界的后一个位置#define va_arg(ap, typ...
avatar
ddddfang
nothing to be told
FRIENDS
baidu ruanyifeng