
数据结构及算法
文章平均质量分 87
介绍了常用的算法和数据结构
SGchi
talk is cheap,show me the code.
展开
-
Linux 内核链表
在Linux内核中使用了大量的链表结构来组织数据,包括设备列表以及各种功能模块中的数据组织。这些链表大多采用在[include/linux/list.h]实现的一个相当精彩的链表数据结构。事实上,内核链表就是采用双循环链表机制。内核链表有别于传统链表就在节点本身不包含数据域,只包含指针域。故而可以很灵活的拓展数据结构。而这种方式组成的链表又被称为是侵入式链表,具体可以参考这篇文章,这里就不作过多赘述了。侵入式链表,内核链表。原创 2023-08-18 17:42:09 · 254 阅读 · 0 评论 -
Radix Tree用法
对于长整型数据的映射,如何解决Hash冲突和Hash表大小的设计是一个很头疼的问题。radix树就是针对这种稀疏的长整型数据查找,能快速且节省空间地完成映射。借助于Radix树,我们可以 实现对于长整型数据类型的路由。利用radix树可以根据一个长整型(比如一个长ID)快速查找到其对应的对象指针。这比用hash映射来的简单,也更节省空间,使用hash映射hash函数难以设计,不恰当的hash函数可能增大冲突,或浪费空间。原创 2023-12-04 20:08:25 · 1027 阅读 · 0 评论 -
冒泡排序
**冒泡排序方法:**对n个记录的表,第一趟冒泡得到一个关键码最大的记录r[n],第二趟对n-1个记录的表进行冒泡排序,再 得到一个关键码最大的记录r[n-1],如此重复,直到得到n个记录按关键码的表。 **时间复杂度和算法稳定性:**从代码中可以看出一共遍历了n-1 + n-2 + … + 2 + 1 = n * (n-1) / 2 = 0.5 * n ^ 2 - 0.5 * n,那么时间复杂度...原创 2019-05-28 22:04:38 · 182 阅读 · 0 评论 -
插入排序
插入排序是简单排序中效率较为高的一种,与冒泡排序相比减少了交换次数,与选择排序相比减少了比较次数 直接插入排序方法: 仅有一个记录的表总是有序的,因此,对n个记录的表,可从第二个记录开始直到第n个记录,逐个向有序表中插入,从而得到n个记录的表。 时间复杂度分析: 插入排序的时间复杂度分析。在最坏情况下,数组完全逆序,插入第2个元素时要考察前1个元素,插入第3个元素时,要考虑前2个元素,……,插入第...原创 2019-05-28 22:31:24 · 146 阅读 · 0 评论