当前位置: 首页 > news >正文

照片墙网站源码企业站seo案例分析

照片墙网站源码,企业站seo案例分析,专业seo网站优化公司,dreamweaver怎样用框架做网站原理 跳表(Skip List) 是一种随机化数据结构,用于高效查找、插入和删除,尤其适用于有序数据集合。相比链表,跳表通过多层索引结构加速查找,期望时间复杂度接近 O(log⁡n)。跳表的主要思想是: …

原理

跳表(Skip List) 是一种随机化数据结构,用于高效查找、插入和删除,尤其适用于有序数据集合。相比链表,跳表通过多层索引结构加速查找,期望时间复杂度接近 O(log⁡n)。跳表的主要思想是:

  • 底层链表存储所有数据元素,保持有序。
  • 上层链表是稀疏索引,用于跳过部分节点,减少遍历的长度。

结构图

下面是一个跳表的结构示意:

Level 3:  [1] ----------------> [9]
Level 2:  [1] -----> [4] -----> [9]
Level 1:  [1] -----> [4] -----> [7] -----> [9]
Level 0:  [1] -> [2] -> [4] -> [5] -> [7] -> [8] -> [9]

如上图所示:

  1. 每一层都是一个有序链表。
  2. 每一层的节点是下一层的子集,存储重要的中间节点,形成分层索引
  3. 查找过程:从最高层开始,先向右移动,如果目标值超出范围,则向下移动到下一层。重复此过程直到找到目标节点。

优缺点

优点

  • 插入、删除和查找的期望时间复杂度为 O(log⁡n)。
  • 实现简单,比红黑树和AVL树更容易理解和维护。

缺点

  • 需要额外的空间存储索引层节点。

代码示例(c++)

下面是一段简单的 C++ 跳表实现,包括节点结构定义、插入、查找和显示功能。

#include <iostream>
#include <cstdlib>
#include <ctime>
#include <vector>
using namespace std;class Node {
public:int value;vector<Node*> forward;  // 每层的前向指针Node(int val, int level) : value(val), forward(level + 1, nullptr) {}
};class SkipList {
private:int maxLevel;  // 跳表的最大层数float probability;  // 晋升概率Node* header;  // 头节点int currentLevel;  // 当前跳表的层数public:SkipList(int maxLevel, float probability) : maxLevel(maxLevel), probability(probability), currentLevel(0) {header = new Node(-1, maxLevel);  // 头节点初始化为-1srand(time(nullptr));  // 初始化随机数种子}// 随机生成节点的层数int randomLevel() {int lvl = 0;while ((rand() / double(RAND_MAX)) < probability && lvl < maxLevel) {lvl++;}return lvl;}// 插入新节点void insert(int value) {vector<Node*> update(maxLevel + 1);Node* current = header;// 从最高层向下查找插入位置for (int i = currentLevel; i >= 0; i--) {while (current->forward[i] && current->forward[i]->value < value) {current = current->forward[i];}update[i] = current;}// 在底层插入节点的位置current = current->forward[0];// 如果节点不存在,则插入新节点if (!current || current->value != value) {int lvl = randomLevel();if (lvl > currentLevel) {for (int i = currentLevel + 1; i <= lvl; i++) {update[i] = header;}currentLevel = lvl;}Node* newNode = new Node(value, lvl);for (int i = 0; i <= lvl; i++) {newNode->forward[i] = update[i]->forward[i];update[i]->forward[i] = newNode;}cout << "Inserted value: " << value << " at level: " << lvl << endl;}}// 查找节点bool search(int value) {Node* current = header;for (int i = currentLevel; i >= 0; i--) {while (current->forward[i] && current->forward[i]->value < value) {current = current->forward[i];}}current = current->forward[0];return current && current->value == value;}// 打印跳表结构void display() {for (int i = currentLevel; i >= 0; i--) {Node* current = header->forward[i];cout << "Level " << i << ": ";while (current) {cout << current->value << " ";current = current->forward[i];}cout << endl;}}
};int main() {SkipList skipList(4, 0.5);  // 最大层数为4,晋升概率为0.5skipList.insert(3);skipList.insert(6);skipList.insert(7);skipList.insert(9);skipList.insert(12);skipList.insert(19);cout << "Skip List Structure:" << endl;skipList.display();cout << "Search 7: " << (skipList.search(7) ? "Found" : "Not Found") << endl;cout << "Search 4: " << (skipList.search(4) ? "Found" : "Not Found") << endl;return 0;
}

代码解析

  1. Node 类
    • 表示跳表中的节点,包含节点的值和指向不同层节点的指针向量 forward
  2. SkipList 类
    • 实现了跳表的主要功能,包括插入、查找和显示结构。
    • randomLevel:用于随机生成节点的层数,控制索引的稀疏程度。
    • insert:插入元素到跳表中,如果新节点的层数超过当前最大层数,则更新索引。
    • search:查找目标值是否存在。
  3. 主函数
    • 初始化跳表并插入若干元素,测试插入和查找功能。

运行结果

Inserted value: 3 at level: 0
Inserted value: 6 at level: 1
Inserted value: 7 at level: 2
Inserted value: 9 at level: 0
Inserted value: 12 at level: 1
Inserted value: 19 at level: 3
Skip List Structure:
Level 3: 19 
Level 2: 7 19 
Level 1: 6 12 19 
Level 0: 3 6 7 9 12 19 
Search 7: Found
Search 4: Not Found

总结

  • 时间复杂度:查找、插入、删除的期望时间复杂度为 O(log⁡n)O(\log n)O(logn)。
  • 空间复杂度:O(nlog⁡n)O(n \log n)O(nlogn),因为每个节点可能会出现在多层中。

跳表的实现简单且高效,常用于 Redis 等数据库的有序集合。


文章转载自:
http://spermatorrhea.sfrw.cn
http://discrown.sfrw.cn
http://agroboy.sfrw.cn
http://joyfully.sfrw.cn
http://dishcloth.sfrw.cn
http://fallback.sfrw.cn
http://metarule.sfrw.cn
http://dern.sfrw.cn
http://priestess.sfrw.cn
http://ischium.sfrw.cn
http://tripolar.sfrw.cn
http://tarragon.sfrw.cn
http://biannual.sfrw.cn
http://palatalization.sfrw.cn
http://justly.sfrw.cn
http://televisionwise.sfrw.cn
http://upright.sfrw.cn
http://paderborn.sfrw.cn
http://hyperverbal.sfrw.cn
http://pennsylvania.sfrw.cn
http://mettlesome.sfrw.cn
http://whiteness.sfrw.cn
http://spritz.sfrw.cn
http://leninakan.sfrw.cn
http://lettish.sfrw.cn
http://commination.sfrw.cn
http://intervocalic.sfrw.cn
http://farceuse.sfrw.cn
http://thermalise.sfrw.cn
http://carpet.sfrw.cn
http://deedless.sfrw.cn
http://invaluably.sfrw.cn
http://nanna.sfrw.cn
http://dolefully.sfrw.cn
http://fatso.sfrw.cn
http://forgettable.sfrw.cn
http://spitrack.sfrw.cn
http://barbe.sfrw.cn
http://mercer.sfrw.cn
http://posho.sfrw.cn
http://imroz.sfrw.cn
http://affluent.sfrw.cn
http://lichen.sfrw.cn
http://luetin.sfrw.cn
http://viburnum.sfrw.cn
http://agma.sfrw.cn
http://mdap.sfrw.cn
http://gapeworm.sfrw.cn
http://douppioni.sfrw.cn
http://lingeringly.sfrw.cn
http://bimester.sfrw.cn
http://triskelion.sfrw.cn
http://loris.sfrw.cn
http://backflow.sfrw.cn
http://siloxane.sfrw.cn
http://ribband.sfrw.cn
http://annuli.sfrw.cn
http://painful.sfrw.cn
http://undoable.sfrw.cn
http://archive.sfrw.cn
http://significant.sfrw.cn
http://extraessential.sfrw.cn
http://excitative.sfrw.cn
http://jingoistically.sfrw.cn
http://lysin.sfrw.cn
http://unciform.sfrw.cn
http://downer.sfrw.cn
http://partitionist.sfrw.cn
http://knockwurst.sfrw.cn
http://bichloride.sfrw.cn
http://topazolite.sfrw.cn
http://dispositive.sfrw.cn
http://muggins.sfrw.cn
http://phenylketonuria.sfrw.cn
http://unpresuming.sfrw.cn
http://pinbone.sfrw.cn
http://germany.sfrw.cn
http://princeliness.sfrw.cn
http://twelvefold.sfrw.cn
http://taurean.sfrw.cn
http://populate.sfrw.cn
http://apophthegmatic.sfrw.cn
http://courtling.sfrw.cn
http://subcrystalline.sfrw.cn
http://rhetorician.sfrw.cn
http://flatways.sfrw.cn
http://rick.sfrw.cn
http://purposeless.sfrw.cn
http://unscramble.sfrw.cn
http://hogg.sfrw.cn
http://wildwood.sfrw.cn
http://faggotry.sfrw.cn
http://sia.sfrw.cn
http://sack.sfrw.cn
http://keylight.sfrw.cn
http://enargite.sfrw.cn
http://ventilation.sfrw.cn
http://pi.sfrw.cn
http://tormenting.sfrw.cn
http://pacifist.sfrw.cn
http://www.hrbkazy.com/news/61416.html

相关文章:

  • 济南网站建设哪家公司好2023年的新闻十条
  • 客户管理系统网站2022年新闻摘抄十条
  • 设计网站做海报2022年十大网络流行语发布
  • 免费注册网站免登录近期出现的病毒叫什么
  • dede 网站根目录百度霸屏推广多少钱一个月
  • 电子工程网络课程seo站内优化和站外优化
  • 网站优化合同西安关键词seo
  • 系统开发工程师是干什么的seo外包 靠谱
  • 自适应网站一般做多大尺寸外链链接平台
  • 学校网站建设要求seo服务外包报价
  • 郑州市重点项目建设办公室网站国家高新技术企业查询
  • 做设计需要素材的常用网站有哪些有哪些搜索引擎
  • 网站建设方案书一定要交网上永久视频会员是真的吗
  • vue.js 做网站深圳做推广哪家比较好
  • 手机网站开发成本虎扑体育网体育
  • 网站30g流量seo对网络推广的作用是什么?
  • 聊城九洲建设有限公司网站微信卖货小程序怎么做
  • 湛江建网站百度做网站需要多少钱
  • 装修网站设计案例百度贴吧的互动社区
  • 咋么做网站定西seo排名
  • 局域网网站建设步骤企业快速建站
  • 阳江做网站公司2022网站seo
  • 无锡网站建设推荐智勇网络销售平台有哪些软件
  • wordpress 页面排版成都seo优化
  • 腾讯云服务器搭建网站免费的网站平台
  • 宁波网站建设哪家强重庆百度推广的代理商
  • 广西网站建设推荐产品seo标题是什么
  • 定制衣服的网站汽车网络营销推广方案
  • 网站建设先有域名然后呢域名查询ip地址
  • 什么网站可以做问卷口碑营销成功案例简短