RT-Thread操作系统内核优秀算法——跳表 (Skip List) 搜索算法原理介绍

Skip List 算法

  • 原理

最近在学习RT-Thread操作系统的内核,发现该系统在内核管理方面代码写的井井有条,因此特地进行学习记录,今天跟大家分享的是rt-thread里面的 定时器里的跳表(skip list) 算法,也就是一种搜索算法

原理

如果现在有一个数组给你,需要大家找到数组中的某个特定元素,你最先想到的是哪个搜索算法呢?(别跟我说是遍历哦~)
我第一时间想到的是二分法查找(得亏了浙江省的技术选考啊)
大概流程就是这个样子哦

跳表的这个算法完全可以类比于数组搜索的二分法,区别就是跳表既可以给数组用也可以给链表用
首先来介绍一下这个算法。我们先给链表里的每一个数据块标一个索引,如下图的1~9,这个就是我们链表的索引值
如果我们一个个往下找的话就是遍历的搜索方法,有点不实用。所以小脑筋一动,就在一级索引上每隔n个索引(这个可以自定,一般是1或者2个,在这里以1为例),再建立一级索引
也就是二级索引,是0,2,4,6,8

在这里插入图片描述

对于追求完美的我这还远远不够,我就建立了三级索引在二级索引的基础上每隔1个单位取一个数值,只剩0,4,8
在这里插入图片描述

但是还不够哦,还可以再取哦,在三级索引上再取就只剩0,8这2个索引了哟~
在这里插入图片描述
到这里之后我们就完成了所有的索引建立

太晚了,先睡喽,明天再补上~

你可能感兴趣的:(算法,RT-Thread,算法,RT-Thread)