站长统计app进入网址新版小猪设计建设网站

news/2025/9/23 3:22:23/文章来源:
站长统计app进入网址新版小猪,设计建设网站,大商创 多用户商城,久久诗词网Redis为什么用跳表实现有序集合 手写一个跳表 为了更好的回答上述问题以及更好的理解和掌握跳表#xff0c;这里可以通过手写一个简单的跳表的形式来帮助读者理解跳表这个数据结构。 我们都知道有序链表在添加、查询、删除的平均时间复杂都都是 O(n) 即线性增长#xff0c…Redis为什么用跳表实现有序集合 手写一个跳表 为了更好的回答上述问题以及更好的理解和掌握跳表这里可以通过手写一个简单的跳表的形式来帮助读者理解跳表这个数据结构。 我们都知道有序链表在添加、查询、删除的平均时间复杂都都是 O(n) 即线性增长所以一旦节点数量达到一定体量后其性能表现就会非常差劲。而跳表我们完全可以理解为在原始链表基础上建立多级索引通过多级索引检索定位将增删改查的时间复杂度变为 O(log n) 。 可能这里说的有些抽象我们举个例子以下图跳表为例其原始链表存储按序存储 1-10有 2 级索引每级索引的索引个数都是基于下层元素个数的一半。 假如我们需要查询元素 6其工作流程如下 从 2 级索引开始先来到节点 4。 查看 4 的后继节点是 8 的 2 级索引这个值大于 6说明 2 级索引后续的索引都是大于 6 的没有再往后搜寻的必要我们索引向下查找。 来到 4 的 1 级索引比对其后继节点为 6查找结束。 相较于原始有序链表需要 6 次我们的跳表通过建立多级索引我们只需两次就直接定位到了目标元素其查寻的复杂度被直接优化为O(log n)。 对应的添加也是一个道理假如我们需要在这个有序集合中添加一个元素 7那么我们就需要通过跳表找到小于元素 7 的最大值也就是下图元素 6 的位置将其插入到元素 6 的后面让元素 6 的索引指向新插入的节点 7其工作流程如下 从 2 级索引开始定位到了元素 4 的索引。 查看索引 4 的后继索引为 8索引向下推进。 来到 1 级索引发现索引 4 后继索引为 6小于插入元素 7指针推进到索引 6 位置。 继续比较 6 的后继节点为索引 8大于元素 7索引继续向下。 最终我们来到 6 的原始节点发现其后继节点为 7指针没有继续向下的空间自此我们可知元素 6 就是小于插入元素 7 的最大值于是便将元素 7 插入。 这里我们又面临一个问题我们是否需要为元素 7 建立索引索引多高合适 我们上文提到理想情况是每一层索引是下一层元素个数的二分之一假设我们的总共有 16 个元素对应各级索引元素个数应该是 1. 一级索引:16/28 2. 二级索引:8/2 4 3. 三级索引:4/22 由此我们用数学归纳法可知 1. 一级索引:16/216/2^18 2. 二级索引:8/2 16/2^2 4 3. 三级索引:4/216/2^32 假设元素个数为 n那么对应 k 层索引的元素个数 r 计算公式为: rn/2^k 同理我们再来推断以下索引的最大高度一般来说最高级索引的元素个数为 2我们设元素总个数为 n索引高度为 h代入上述公式可得 2 n/2^h2*2^hn2^(h1)nh1log2^nhlog2^n -1 而 Redis 又是内存数据库我们假设元素最大个数是65536我们把65536代入上述公式可知最大高度为 16。所以我们建议添加一个元素后为其建立的索引高度不超过 16。 因为我们要求尽可能保证每一个上级索引都是下级索引的一半在实现高度生成算法时我们可以这样设计 跳表的高度计算从原始链表开始即默认情况下插入的元素的高度为 1代表没有索引只有元素节点。 设计一个为插入元素生成节点索引高度 level 的方法。 进行一次随机运算随机数值范围为 0-1 之间。 如果随机数大于 0.5 则为当前元素添加一级索引自此我们保证生成一级索引的概率为 50% 这也就保证了 1 级索引理想情况下只有一半的元素会生成索引。 同理后续每次随机算法得到的值大于 0.5 时我们的索引高度就加 1这样就可以保证节点生成的 2 级索引概率为 25% 3 级索引为 12.5% …… 我们回过头上述插入 7 之后我们通过随机算法得到 2即要为其建立 1 级索引 最后我们再来说说删除假设我们这里要删除元素 10我们必须定位到当前跳表各层元素小于 10 的最大值索引执行步骤为 2 级索引 4 的后继节点为 8指针推进。 索引 8 无后继节点该层无要删除的元素指针直接向下。 1 级索引 8 后继节点为 10说明 1 级索引 8 在进行删除时需要将自己的指针和 1 级索引 10 断开联系将 10 删除。 1 级索引完成定位后指针向下后继节点为 9指针推进。 9 的后继节点为 10同理需要让其指向 null将 10 删除。 总结 有几个原因 1、它们不是很占用内存。这主要取决于你。改变节点拥有给定层数的概率的参数会使它们比 B 树更节省内存。 2、有序集合经常是许多 ZRANGE 或 ZREVRANGE 操作的目标也就是说以链表的方式遍历跳表。通过这种操作跳表的缓存局部性至少和其他类型的平衡树一样好。 3、它们更容易实现、调试等等。例如由于跳表的简单性我收到了一个补丁已经在 Redis 主分支中用增强的跳表实现了O(log(N))的 ZRANK。它只需要对代码做很少的修改。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/911223.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

青岛网站建设博采网络深圳制作公司网站的公司

1:transient 当对象被序列化时,transient阻止其修饰的对象进行序列化;当反序列化时,此对象的值不会被恢复。 2:instanceof 判断引用指向的对象,是不是某个类及其子类的实例对象; class Person …

上网站建设公司东莞网站建设星河

本节讲解什么是非阻塞IO,如何将文件描述符修改为非阻塞式 3.6.1.1、阻塞与非阻塞 (1)阻塞是指函数调用会被阻塞。本质是当前进程调用了函数,进入内核里面去后,因为当前进程的执行条件不满足,内核无法里面完…

千海网站建设 小程序简述你对于网站建设的认识

接手了一个项目,打包存在重大问题,故此在unity addressables 基础上弄了一个简单的打包工具,代码也都做好了注释,操作非常简单以下为操作方法: 首先设置导入Addressables插件,并设置好详细参见&#xff1a…

公司网站数媒设计制作泰州腾讯网站开发

最近在研究自动驾驶视觉语义地图构建,因为要使用到语义分割技术,趁此机会学习了百度飞桨的图像分割课程,课程蛮好的,收获也蛮大的。 课程地址:https://aistudio.baidu.com/aistudio/course/introduce/1767 1. 课程简要…

公司网站管理制定的作用一家做运动鞋的网站

解析 很好的题 也就是我没做出来的意思 反向思维似乎是我欠缺的 这道题也是 也许做题时应该多特意往这边想想 当正向看并没有太好的性质时,也许反过来能使题目豁然开朗 容易想到暴力n方如何做 (以下均指反图) 找到1所在的点,染色…

淘宝客自建手机网站网站建设与维护的认识

单选题(共7题,每题5分) 1、根据本讲,我国目前已有()个省份设立了自贸区。 C、21 2、根据本讲,“一带一路”的官方翻译为()。 A、The Belt and Road Initiative 3、根据…

做网站的一般多钱携程网站联盟

解析 本题也算看了一半题解吧 看到“数学归纳法”退出来自己推的 这题想到归纳法后面也就简单了 首先,n3和n4的时候显然有解,可以打表 然后考虑在获得n-2的答案时,如何获得n的答案 如果n为奇数,我们可以把(1,n-1,2,n)、(3,n-1,4…

怎么做淘宝返利网站吗网络营销基础战略

试题编号:0365 座位号 2018-2019 学年度第一学期期末考试 电子商务概论 试题 一、名词解释题: (每题5分,共20分) 1.专题讨论法: 2.社交网络营销: 访问网站: 第三方物流企业配送: …

水产养殖畜禽饲料类网站前端模板苍梧网站建设

亚马逊作为全球最大的电商平台,很多中国卖家在平台上做着买卖。亚马逊中国卖每天都要频繁访问亚马逊店铺处理回复邮件和处理订单,上传产品等等事宜,但是时常会遇到打开一个新页面需要等待很长时间,更甚者直接打不开页面! 亚马逊打…

网站关键字如何设置安卓app用什么语言开发

C# 委托与事件 浅尝 C# 委托与事件 深入 委托 委托有什么用&#xff1f; 将函数作为函数的参数传递声明事件并用来注册 强类型委托 Action<T1> Func<T1, TResult>事件 希望一个类的某些成员在发生变化时能被外界观测到 CollctionChangedTextChanged 标准.Ne…

网站备案查询平台旅游景区网站设计

洗地机因为自身的超强清洁效果&#xff0c;能大大的降低家务清洁工作&#xff0c;所以近年来以及越来越成为家庭的标配家电。 地机选起来让人眼花缭乱&#xff0c;对于消费者来说&#xff0c;如何选择一台实用性价比高的洗地机已经是一个头疼的问题&#xff0c;看着宣传画面很…

网站建设智能优化网站创意的技术

在应用程序开发过程中经常会进行IO设备的操作&#xff0c;比如磁盘的读写&#xff0c;网卡的读写&#xff0c;键盘&#xff0c;鼠标的读入等&#xff0c;大多数应用开发人员使用高级语言进行开发&#xff0c;例如C&#xff0c;C&#xff0c;java&#xff0c;python等&#xff0…

中国建设部建造师网站wordpress文章没缩略图

1. Transition定义 Vue 提供了两个内置组件&#xff0c;可以帮助你制作基于状态变化的过渡和动画&#xff1a; <Transition>会在一个元素或组件进入和离开 DOM 时应用动画。 <TransitionGroup> 会在一个 v-for 列表中的元素或组件被插入&#xff0c;移动&#xff0…

宁波网站建设哪家强三门网站制作

出于安全目的&#xff0c;在禁用了devMode之后&#xff0c;仍然不希望其他人员看到webconsole.html页面&#xff0c;则可以直接删除webconsole.html 的源文件&#xff0c; 它的位置存在于&#xff1a; 我们手工删除 struts2-core-*.jar\org\apache\struts2\interceptor\debuggi…

个人网站做哪些流程淄博网站建设哪家好

引言 LCD1602是一种16列2行的字符液晶显示模块&#xff0c;常用于Arduino等嵌入式系统的用户接口。为了简化连接和编程&#xff0c;我们将使用I2C接口&#xff0c;这只需要Arduino的两个模拟输入引脚。 步骤 安装 LiquidCrystal_I2C 库 为了在Arduino中使用I2C模块驱动LCD显…

织梦网站修改教程视频男生女生在床上做的那个网站

cg word List 1 如果存在什么问题&#xff0c;欢迎批评指正&#xff01;谢谢!

西安小公司网站建设网站制作性价比哪家好

本文简要地介绍 OSI 模型 1’ 2’ 3。 更新&#xff1a;2023 / 7 / 23 科普 | OSI模型 术语节点链路协议网络拓扑 概念作用结构应用层表示层会话层传输层网络层数据链路层物理层 数据如何流动OSI 和TCP/IP 的对应关系和协议参考链接 术语 节点 节点&#xff08; Node &#…

网站开发考试题网加商学院网站怎么做

PrimeFaces扩展团队很高兴宣布即将推出的3.0.0主要版本的几个新组件。 我们的新提交人Francesco Strazzullo为该项目提供了“ Turbo Boost”&#xff0c;并带来了至少6个已成功集成的 JSF组件&#xff01; 当前的开发状态是OpenShift上的deployet – 请查看展示柜。以下是有关添…

安徽省工程建设工程信息网站加强政务公开网站建设

在高度竞争的汽车市场中&#xff0c;销售人员需要具备强大的专业知识、引人入胜的销售技巧&#xff0c;以及敏锐的市场洞察力。然而&#xff0c;传统的培训方式往往无法满足这些需求&#xff0c;因为它们往往忽略了实践的重要性。 为了解决这个问题&#xff0c;许多公司开始采用…