首页 > 其他分享 >数据结构

数据结构

时间:2024-01-21 20:00:01浏览次数:24  
标签:排序 队列 复杂度 链表 查找 key 数据结构

  • 时间复杂度
  1. 评判规则:量化算法执行的操作/执行步骤的数量;
  2. 最重要的项:时间复杂度表达式中最有意义的项
  3. 大O记法:O(最重要的一项)
  4. O(1)表示一个特殊复杂度,含义为某个任务通过有限可数的资源即可完成,于输入数据量n无关;
  5. 一个顺序结构的代码,时间负责度是O(1);
  6. 二分查找法,分而治之的二分策略,时间复杂度为O(logn);
  7. 一个简单的for循环或并列两个for循环,时间复杂度是O(n);
  8. 两个嵌套的for循环,时间复杂度是O(n^2);
  • 散列表
  1. 散列函数:先用H(key)=key MOD7有冲突后解决方法
  2. Hash冲突
    • 链表法
    1. 将产生冲突的值以链表的形式连接起来,将相同hash值的对象以链表的形式进行存储,当链表过长时转换成红黑树;
    • 开放寻址
    1. 冲突处理:线性探测法 (向下顺延1个)
    2. 二次探测法:di=1^2,-1^2,2^2,-2^2     Hi=(H0+di+m)%m
    3. 双散列法:ReHash(key)=keyMOD11+1 Hi=(H0+i*ReHash(key))%m
  3. 动态扩容
    1. HashMap的初始容量是16;
    2. 扩容阈值是0.75;
    3. 何时扩容:
      1. HashMap中存储的数据个数超过数组长度*0.75,就要扩容;
      2. 如果单个链表的长度超过8,但是数组的长度没有超过64,就扩容;
    4. 何时树化:
      1. 单链长度超过8,数组长度超过64(包含)才进行树化;
      2. 哪个链超过了阈值就哪个链树化;
      3. 如果树化后的节点数小于6,就退树化,变成链表;
  4. 位图
  • 二叉查找树
  1. 平衡二叉树
  2. 二叉查找树
  3. 平衡二叉查找树
  4. 安全二叉树
  5. 满二叉树
  • 多路查找树
  1. B树
  2. B+树
  3. 2-3树
  4. 2-3-4树
  5. 红黑树
  1. 大根堆
  2. 小根堆
  3. 优先级队列
  4. 斐波那契堆
  5. 二顶堆
  1. 权重
    1. 有权图
    2. 无权图
  2. 方向
    1. 有向图
    2. 无向图
  • 线性表
  1. 连续存储--数组
  2. 离散存储--链表
    1. 单向链表
    2. 双向链表
    3. 循环链表
    4. 非循环链表
    5. 跳表
    1. 顺序栈
    2. 链式栈
  3. 队列
    1. 普通队列
    2. 双端队列
    3. 阻塞队列
    4. 并发队列
    5. 阻塞并发队列
  • 排序算法
  • 比较类排序
  1. 交换排序
    1. 冒泡排序
    2. 快速排序
  2. 插入排序
    1. 简单插入排序
    2. 希尔排序
  3. 选择排序
    1. 简单选择排序
    2. 堆排序
  4. 归并排序
    1. 二路归并排序
    2. 多路归并排序
  • 非比较类排序
  1. 计数排序
  2. 桶排序
  3. 基数排序

标签:排序,队列,复杂度,链表,查找,key,数据结构
From: https://www.cnblogs.com/wxy01/p/17977753

相关文章

  • 数据结构——栈及相关操作
    #include<bits/stdc++.h>#defineMaxSize10#defineElementTypeinttypedefstruct{ElementTypedata[MaxSize];inttop;}SqStack;voidInitStack(SqStack&S){S.top=-1;}boolStackEmpty(SqStack&S){if(S.top==-1)......
  • 【数据结构】详谈队列的顺序存储及C语言实现
    循环队列及其基本操作的C语言实现前言大家好,很高兴又和大家见面啦!!!在上一篇内容中,我们在介绍完队列的基本概念、重要术语以及基本操作后,又回顾了一下数据结构的三要素——数据的逻辑结构、数据的存储结构以及数据的运算。队列这种数据结构我们已经介绍了它的逻辑结构以及数据运算......
  • 最大异或和 可持久化数据结构入门
    最大异或和题目描述给定一个非负整数序列\(\{a\}\),初始长度为\(N\)。有\(M\)个操作,有以下两种操作类型:Ax:添加操作,表示在序列末尾添加一个数\(x\),序列的长度\(N\)加\(1\)。Qlrx:询问操作,你需要找到一个位置\(p\),满足\(l\lep\ler\),使得:\(a[p]\oplusa[p+1]......
  • 数据结构——线段树 入门以后 学习笔记
    数据结构——线段树入门以后学习笔记入门笔记有时间写。才发现我不会线段树。/ll可以看出来我很喜欢class/cf有的代码需要前置:usingll=longlong;constexprllmod=998244353;constexprintroot=1;P3372线段树1classseg_t{private:structemm{......
  • 这才是你应该了解的Redis数据结构!
    深入了解Redis数据结构Redis,作为一种高性能的内存数据库,支持多种数据结构,从简单的字符串到复杂的哈希表。在这篇博文中,我们将深入探讨Redis的一些主要数据结构,并通过详细的例子展示它们的使用。1.字符串(String)1.1存储和获取Redis中的字符串是二进制安全的,可以存储任何数......
  • mysql8.0索引数据结构
    1、为什么使用索引假如给数据使用二叉树这样的数据结构进行存储,如下图所示2、索引及其优缺点2.1、索引概述2.2、优点(1)类似大学图书馆建书目索引,提高数据检索的效率,降低数据库的IO成本,这也是创建索引最主要的原因。(2)通过创建唯一索引,可以保证数据库表中每一行数据的唯一性......
  • python数据结构中实现队列的几种方法
    1.list实现enqueueappend()dequeuepop(0)或enqueueinsert(0,item)dequeuepop()MAX_SIZE=100classMyQueue1(object):"""模拟队列"""def__init__(self):self.items=[]self.size=0defis_empty(s......
  • 【数据结构】C语言实现共享栈
    共享栈通过C语言实现导言大家好,很高兴又和大家见面啦!!!在上一篇内容中,我们介绍了如何通过C语言实现顺序栈,并且在介绍顺序栈的进栈操作时有提到过我们可以通过选择数组的首元素或者尾元素作为栈底,来进行栈的创建,以及栈的另一种形式——链栈。根据前面的介绍,我们知道了顺序栈是通过静......
  • 【数据结构】C语言实现顺序栈
    顺序栈的C语言实现导言大家好,很高兴又和大家见面啦!!!在上一个篇章中,我们介绍了栈的基本概念,以及栈中的重要术语。通过介绍我们知道了栈的本质也是一种线性表,只不过它是一种操作受限的线性表。因此栈的实现方式与线性表的实现实际上是大同小异的。下面我们就来介绍一下如何通过C语言......
  • 海亮01/15数据结构专题
    海亮01/15数据结构专题题单T1P4299首都题意在X星球上有\(n\)个国家,每个国家占据着X星球的一座城市,城市从\(1\)至\(n\)编号。由于国家之间是敌对关系,所以不同国家的两个城市是不会有公路相连的。X星球上战乱频发,如果A国打败了B国,那么B国将永远从这个星球消......