
数据结构
文章平均质量分 90
数据结构学习笔记
真的王
这个作者很懒,什么都没留下…
展开
-
【数据结构与算法】跳表
跳表是一个随机化的数据结构,可以被看做二叉树的一个变种,它在性能上和红黑树,AVL树不相上下,但是跳表的原理非常简单,目前在Redis和LeveIDB中都有用到。它采用随机技术决定链表中哪些节点应增加向前指针以及在该节点中应增加多少个指针。跳表结构的头节点需有足够的指针域,以满足可能构造最大级数的需要,而尾节点不需要指针域。采用这种随机技术,跳表中的搜索、插入、删除操作的时间均为O(logn),然而,最坏情况下时间复杂性却变成O(n)。原创 2022-12-13 17:49:32 · 1044 阅读 · 0 评论 -
【数据结构与算法】B_树
我们已经有很多索引的数据结构了例如:顺序查找 、二分查找 、二叉搜索树 、二叉平衡树(AVL树和红黑树) 、哈希以上结构适合于数据量相对较小,能够一次性存放在内存中,进行数据查找如果数据量很大,一次性无法放进内存中,那么只能存放到磁盘上,如果要进行搜索,只能将关键字映射的数据的地址存放到搜索树的节点中,要访问数据,就要先去磁盘中读取磁盘的速度是远低于内存的,虽然平衡搜索树的时间复杂度是O(log H)(H是高度)原创 2022-12-12 18:44:27 · 796 阅读 · 0 评论 -
【数据结构与算法】图
以上就是今天要讲的内容,本文仅仅简单介绍了图论相关简单内容。原创 2022-12-10 15:51:17 · 778 阅读 · 0 评论 -
【数据结构与算法】并查集
并查集被很多OIer认为是最简洁而优雅的数据结构之一,主要用于解决一些元素分组的问题。它管理一系列不相交的集合,并支持两种操作:在一些应用问题中,需要将n个不同的元素划分成一些不相交的集合。开始时,每个元素自成一个单元素集合,然后按一定的规律将归于同一组元素的集合合并。在此过程中要反复用到查询某一个元素归属于那个集合的运算。适合于描述这类问题的抽象数据类型称为并查集(union-fifind-set)。 通俗的来说就是找朋友问题假如现在有10个人,分别是{0,1,2,3,4,5,6,7,8,9}他们有些人之原创 2022-12-05 20:44:52 · 476 阅读 · 0 评论 -
【C++】哈希相关问题
我们可以采取这样的思路:把1这个数放到下标为0的位置,2放到下标为1的位置,按照这个思路将数组整理一遍,然后再遍历一遍数组,第一个遇到的它的值不等于下标+1的那个数就是我们要寻找的数字。首先要实现迭代器,通过查看stl源码可以知道,HashTable的迭代器中不但有节点的指针,还有,哈希表的指针,这是为了方便++时,跳转到下一个哈希桶。=这几个运算符重载,这里扩容也是有一定的学问的,我们不能直接粗暴的将哈希表扩容到原来的2倍,为了降低冲突的概率,我们每次扩容时都会扩容到原哈希表的二倍左右的素数。原创 2022-11-13 17:33:31 · 880 阅读 · 0 评论 -
【数据结构与算法】——排序
插入排序(英语:Insertion Sort)是一种简单直观的排序算法。它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。插入排序在实现上,通常采用in-place排序(即只需用到O(1)的额外空间的排序),因而在从后向前扫描过程中,需要反复把已排序元素逐步向后挪位,为最新元素提供插入空间。 具体实现希尔排序(Shellsort),也称递减增量排序算法,是插入排序的一种更高效的改进版本。希尔排序是非稳定排序算法。以23, 10, 4, 1的步长序列进行希尔原创 2022-07-03 21:57:40 · 431 阅读 · 0 评论 -
【数据结构与算法】快速排序
目录一、快速排序定义二、排序思想1.Hoare法2.挖坑法 3.前后指针法三、不足及改进1.不足2.改进四、由递归改为非递归快速排序是由东尼·霍尔所发展的一种排序算法。在平均状况下,排序 n 个项目要 Ο(nlogn) 次比较。在最坏状况下则需要 Ο(n2) 次比较,但这种状况并不常见。事实上,快速排序通常明显比其他 Ο(nlogn) 算法更快,因为它的内部循环(inner loop)可以在大部分的架构上很有效率地被实现出来。快速排序使用分治法(Divide and conquer)策略来把一个串行(lis原创 2022-06-26 11:48:28 · 783 阅读 · 0 评论 -
数据结构与算法——二叉树的实现与原理
目录一、二叉树的原理1.二叉树的基本概念2.树的性质3.二叉树的性质二、二叉树的实现1.二叉树的定义2.二叉树的创建3.前序遍历4.中序遍历5.后序遍历6.层序遍历7.二叉树的节点的个数8.二叉树的叶子节点的个数9.二叉树第k层节点个数10.二叉树查找值为x的节点11.判断二叉树是否是完全二叉树12.二叉树销毁一、二叉树的原理1.二叉树的基本概念在电脑科学中,二叉树(英语:Binary tree)是每个节点最多只.原创 2022-05-27 19:15:51 · 3517 阅读 · 0 评论 -
数据结构与算法——堆的原理和实现
目录一、堆的原理二、堆的实现1.堆的定义2.堆的初始化3.向上调整算法4.向上调整算法代码实现5.堆的插入6.向下调整算法6.堆的删除7.堆的大小8.判断堆是否为空总结一、堆的原理堆(英语:Heap)是计算机科学中的一种特别的完全二叉树。若是满足以下特性,即可称为堆:“给定堆中任意节点P和C,若P是C的母节点,那么P的值会小于等于(或大于等于)C的值”。若母节点的值恒小于等于子节点的值,此堆称为最小堆(min heap);反之,若母节点的..原创 2022-05-20 17:07:01 · 2238 阅读 · 0 评论 -
数据结构与算法——队列的实现及模拟
目录一、队列的原理二、队列的实现1.队列的定义2.队列的初始化3.入队列4.出队列5.获取队列头部元素6.获取队列队尾元素7.检测队列是否为空8.队列元素个数·9.销毁队列一、队列的原理队列,又称为伫列(queue),计算机科学中的一种抽象资料型别,是先进先出(FIFO, First-In-First-Out)的线性表。在具体应用中通常用链表或者数组来实现。队列只允许在后端(称为rear)进行插入操作,在前端(称为front)进行删除操作。...原创 2022-05-17 23:26:51 · 439 阅读 · 0 评论 -
数据结构与算法——栈的实现及模拟
目录一、栈的原理二、栈的实现1.栈的定义2.栈的初始化3.入栈4.出栈5.获取栈顶元素6.栈的大小7.判断栈是否为空8.栈的销毁一、栈的原理堆栈(英语:stack)又称为栈或堆叠,是计算机科学中的一种抽象资料类型,只允许在有序的线性资料集合的一端(称为堆栈顶端,英语:top)进行加入数据(英语:push)和移除数据(英语:pop)的运算。因而按照后进先出(LIFO, Last In First Out)的原理运作。常与另一种有序的线性资料集合原创 2022-05-13 19:13:45 · 571 阅读 · 0 评论 -
数据结构与算法——带头双向循环链表的实现及原理
目录一、带头双向循环链表的原理二、带头双向循环链表的实现1.带头双向循环链表的定义2.带头双向循环链表的初始化3.带头双向循环链表节点的创建4.打印链表5.判断链表是否为空6.双向链表在pos的前面进行插入7.双向链表在头部/尾部插入数据8.双向链表删除pos处的节点9.双向链表在头部/尾部删除数据10.销毁链表三、完整代码及演示总结一、带头双向循环链表的原理我们知道链表有带头和不带头,循环与不循环,单向与双向,这几种区别排列组合链原创 2022-05-11 19:03:16 · 694 阅读 · 0 评论 -
数据结构与算法——单链表的实现及原理
目录一、链表的原理1.什么是链表2.什么是单链表3.顺序表与链表的对比二、单链表的实现1.单链表的定义2.创建一个链表节点4.单链表数据在头部插入总结一、链表的原理1.什么是链表链表是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。链表由一系列结点(链表中每一个元素称为结点)组成,结点可以在运行时动态生成。每个结点包括两个部分:一个是存储数据元素的数据域,另一个是存储下一个结点地址的指针域。 相比于线性表顺序原创 2022-05-02 17:26:47 · 2269 阅读 · 0 评论 -
数据结构与算法——顺序表的实现及原理
目录一、顺序表的原理1.什么是顺序表?2.什么是线性表3.顺序表与链表的区别二、顺序表的实现1.顺序表的初始化顺序表的定义:顺序表的初始化2.顺序表数据在尾部插入3.顺序表数据在头部插入4.顺序表数据在尾部的删除5.顺序表数据在头部的删除6.顺序表数据在任意位置插入7.顺序表数据在任意位置删除8.顺序表元素的查找9.顺序表元素的修改10.顺序表元素的打印11.顺序表的销毁总结一、顺序表的原理1.什么是顺序表?...原创 2022-05-02 13:41:23 · 4430 阅读 · 0 评论 -
时间复杂度与空间复杂度
目录前言一、时间复杂度二、空间复杂度总结前言我们在学习C语言时就一直听人说时间复杂度空间复杂度,那么什么是时间复杂度空间复杂度?一、时间复杂度在计算机科学中,算法的时间复杂度(Time complexity)是一个函数,它定性描述该算法的运行时间。这是一个代表算法输入值的字符串的长度的函数。时间复杂度常用大O符号表述,不包括这个函数的低阶项和首项系数。使用这种方式时,时间复杂度可被称为是渐近的,亦即考察输入值大小趋近无穷时的情况。例如,如果一个算法对于任何大小为...原创 2022-05-01 22:19:42 · 326 阅读 · 0 评论