首页
学习
活动
专区
圈层
工具
发布

#链表

向量相似性搜索详解:Flat Index、IVF 与 HNSW

deephub

它的原理并不复杂:在普通有序链表之上叠加多层快捷指针。搜索时从最高层出发以大步幅向右跳跃;当下一个节点的值超过目标时下降一层继续搜索,每下降一层搜索范围就缩小一...

3700

今天不聊技术,发两道题.为什么?年底了,做完可能有惊喜哦

烟雨平生

设计并实现一个令牌桶。初始化时,需要初始化令牌桶的 最大容量和每秒生成令牌的数量。

2810

哈希表设计精髓:从哈希函数、冲突解决(开放寻址 / 链地址)到负载因子的数学逻辑

果酱带你啃java

原理:每个桶对应一个链表(或红黑树),冲突元素直接添加到链表尾部;当链表长度超过阈值(如8)时,转为红黑树以优化查找性能。 优势:无聚集现象,删除操作简单(直接...

4010

数组 vs 链表:物理存储的底层逻辑,如何锁死 Java 集合 90% 的性能上限?

果酱带你啃java

HashMap的底层是哈希桶数组+链表(解决哈希冲突)+红黑树(优化长链表查询),它把数组和链表的优势结合到了极致:

3810

跳表:从理论到 Redis 实战,解锁「空间换时间」的终极数据结构

果酱带你啃java

链表是一种线性数据结构,优势在于插入删除的时间复杂度为 O(1),但查找的时间复杂度为 O(n)。即使是有序链表,也需要逐个遍历节点,效率低下。

2510

栈:线性结构中的 “后进先出” 王者,从底层逻辑到实战应用全解析

果酱带你啃java

链表栈用单向链表存储元素,栈顶指向链表的头节点(权威参考:《数据结构与算法(Java版)》邓俊辉)。由于链表是动态结构,无需扩容,但需要额外存储节点指针。

5210

链表:从底层逻辑到实战应用,彻底搞懂线性结构的灵魂!

果酱带你啃java

循环链表是单链表或双向链表的变种 —— 尾节点的next指向头节点(单循环链表),或头节点的prev指向尾节点(双向循环链表)。

5010

MySQL查询海量数据会出现OOM的场景么?

bisal

InnoDB按5:3比例把链表分成New区和Old区。图中LRU_old指向的就是old区域的第一个位置,是整个链表的5/8处。即靠近链表头部的5/8是New区...

9910

Go语言的container/ring包:循环链表轻松处理循环数据

技术圈

环形链表是一种特殊的链表,它的最后一个元素指向第一个元素,形成一个闭环。与普通线性链表不同,环形链表没有真正的起点和终点,可以从任意节点开始遍历整个结构。

8410

为什么 InnoDB 中的反向索引扫描更慢?

爱可生开源社区

InnoDB 使用单向链表来组织 record。 每个页面有两个虚拟 record:infimum 和 supremum,它们分别作为链表的头部和尾部。 一旦数...

13310

Linux内核中的container_of宏详解

一个平凡而乐于分享的小比特

container_of是Linux内核中一个非常巧妙且常用的宏,它的作用是通过结构体成员的地址反向推导出包含该成员的结构体的地址。

20110

UCOSIII笔记(十六)就绪列表

一个平凡而乐于分享的小比特

我们来一起深入浅出地剖析一下 uC/OS-III 内核的“心脏”之一——就绪列表。

13210

Rust 中的 LinkedList:双向链表的设计智慧与实践陷阱

果粒蹬

但这种安全性有代价:无法进行 O(1) 时间的"剪切粘贴"操作(将某个节点从一个链表移动到另一个链表)而不改变其他指针。虽然 LinkedList::splic...

13110

C++ 链栈

Dragon水魅

与此形成对比的是静态链表,传入的是数组本身,不论是初始化还是赋值,访问的都是本身,所以使用 “.” 进行访问:

9810

C++ 静态链表

Dragon水魅

11810

C++ 循环双链表(带头结点)

Dragon水魅

14110

C++ 单链表(无头结点)

Dragon水魅

13410

C++ 顺序表(动态分配)

Dragon水魅

12610

C语言栈和队列的实现

用户12004530

栈(Stack)是一种操作受限的线性数据结构,它的核心规则是先进后出(FILO, First In Last Out)最先放入栈的元素,最后才能取出;最后放入的...

11710

C++ 单链表(带头结点)

Dragon水魅

9110
领券