首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

数据结构总结!

说到算法,就不能不说起数据结构。今天我来讲一讲,什么是数据结构?程序员怎么学好数据结构? 我们介绍算法的时候说过,计算机当中的算法,本质就是一系列程序指令,用以解决特定的运算和逻辑问题。...而所谓数据结构,是数据的组织、管理和存储格式。简单理解的话,数据结构就是执行算法的“原材料”。 俗话讲,巧妇难为无米之炊。算法,就好比是聪明勤劳的女主人,而数据结构,就是用来做饭做菜的柴米油盐。...数据结构都有哪些组成方式呢? 首先,是线性结构。 但凡有过一点编程基础的小伙伴,肯定都知道数组,这就是一种典型的线性数据结构。 除了数组以外,链表也是一种重要的数据结构。...Redis当中的集合 sortedSet,背后的数据结构就是跳表。 复合数据结构,往往结合了多种基础数据结构当然优势,在特定的场景下非常有用。...这就是数据结构的几种组成方式,大家可以把这张图保存一下。由于篇幅原因,图里面所列出的具体数据结构,只是最最常用的几种,并非全部。

98241

数据结构:八数据结构分类

本文目录: 数据结构分类 1、数组 2、栈 3、队列 4、链表 5、树 6、散列表 7、堆 8、图 数据结构分类 数据结构是指相互之间存在着一种或多种关系的数据元素的集合和该集合中数据元素之间的关系组成...常用的数据结构有:数组,栈,链表,队列,树,图,堆,散列表等,如图所示: 每一种数据结构都有着独特的数据存储方式,下面为大家介绍它们的结构和优缺点。...适用场景: 数据量较小,需要频繁增加,删除操作的场景 5、树 树是一种数据结构,它是由n(n>=1)个有限节点组成一个具有层次关系的集合。...扩展: 二叉树有很多扩展的数据结构,包括平衡二叉树、红黑树、B+树等,这些数据结构二叉树的基础上衍生了很多的功能,在实际应用中广泛用到,例如mysql的数据库索引结构用的就是B+树,还有HashMap...将根节点最大的堆叫做最大堆或根堆,根节点最小的堆叫做最小堆或小根堆。常见的堆有二叉堆、斐波那契堆等。 堆的定义如下:n个元素的序列{k1,k2,ki,…,kn}当且仅当满足下关系时,称之为堆。

44110
您找到你想要的搜索结果了吗?
是的
没有找到

盘点 Python 10 常用数据结构(上篇)

学习目的 这个专题,尽量使用最精简的文字,借助典型案例盘点Python常用的数据结构。...如果你还处于Python入门阶段,通常只需掌握list、tuple、set、dict这类数据结构,做到灵活使用即可。...学习目标 学习数据结构第一阶段:掌握它们的基本用法,使用它们解决一些基本问题; 学习第二阶段:知道何种场景选用哪种最恰当的数据结构,去解决题问题; 学习第三阶段:了解内置数据结构的背后源码实现,与《算法和数据结构...3 set 基本用法 set是一种里面不能含有重复元素的数据结构,这种特性天然的使用于列表的去重。...以上4种数据结构相信大家都已经比较熟悉,因此我言简意赅的介绍一遍。接下来再详细的介绍下面6种数据结构及各自使用场景,会列举更多的例子。

88030

盘点 Python 10 常用数据结构(下篇)

Python 常用数据结构 此专题《盘点Python10常用数据结构》目录: 学习目的 学习目标 1 list 2 tuple 3 set 4 dict 5 deque 6 Counter 7 OrderedDict...学习目标 学习数据结构第一阶段:掌握它们的基本用法,使用它们解决一些基本问题; 学习第二阶段:知道何种场景选用哪种最恰当的数据结构,去解决题问题; 学习第三阶段:了解内置数据结构的背后源码实现,与《算法和数据结构...3 set 基本用法 set是一种里面不能含有重复元素的数据结构,这种特性天然的使用于列表的去重。...以上4种数据结构相信大家都已经比较熟悉,因此我言简意赅的介绍一遍。接下来再详细的介绍下面6种数据结构及各自使用场景,会列举更多的例子。...8 heapq 基本用法 基于list优化的一个数据结构:堆队列,也称为优先队列。

87930

数据结构】七排序算法

内排序的分类 根据排序过程中借助的主要操作,内排序分为: 插入排序 交换排序 选择排序 归并排序 2.外排序 外排序是由于排序的记录个数太多,不能同时放置在内存中,整个排序过程需要在内外存之间多次交换数据才能进行...它的思路就是让每一个关键字,都和它后面的每一个关键字比较,如果则交换,这样第一位置的关键字在第一次循环后一定变成最小值。...简单选择排序法的工作原理是:每一次从无序组的数据元素中选出最小(或最大)的一个元素,存放在无序组的起始位置,无序组元素减少,有序组元素增加,直到全部待排序的数据元素排完。 ?...代码说明 简单选择排序相对简单,交换移动数据的次数相当少,节约时间。 简单选择排序的时间复杂度为O(n^2)。...并且它把当前元素的记录都往后移动,用以腾出“自己”该插入的位置。当n-1趟插入完成后该记录就是有序序列。 ? 代码说明 直接插入排序的时间复杂度为O(n^2)。

954100

数据结构》八排序算法 必读!

时间复杂度 一整个快排:O(N*logN) 3.2.2 前后指针法 基本思想 1.cur往前走,找到比key小的数据 2.找到比key小的数据以后,停下来,++prev 3.交换prev和cur指向位置的值...cur还没遇到比key数据之前,prev紧跟着cur,cur遇到比key的值以后,prev和cur之间间隔着一段比key数据。...“栈”模拟(这个“栈”是数据结构中的“栈”,不是系统内部那个“栈”,一般用到栈难度都是略大的) 这里的快排改非递归用的就是“栈”模拟。...“栈”模拟(这个“栈”是数据结构中的“栈”,不是系统内部那个“栈”,一般用到栈难度都是略大的) 这里归并排序非递归实现就是采用“循环”。...希尔排序:在预排序时,相同的数据可能在不同的组里面,没办法控制,所以不稳定。

52930

数据结构】八经典排序(两万字总结)

,小的数据能越快的到前面来,但数据的有序性较低;gap 越小,数据到后面和小的数据到前面和后面的速度较慢,但是数据的有序性就越高;所以综合二者考虑,为了提高效率,大佬Knuth提出了 gap 随数据个数和排序次数变化的思路...2.3 复杂度及稳定性 时间复杂度 在希尔排序中,因为 gap 的取值方法不唯一,导致其时间复杂度很难去计算,因此在一些优秀的数据结构书籍中给出的希尔排序的时间复杂度也都不固定: 因为我们的 gap...堆排序 4.1 排序思想 堆排序 (Heapsort) 是指利用堆积树(堆)这种数据结构所设计的一种排序算法,它是选择排序的一种;它通过堆来进行选择数据;需要注意的是排升序要建大堆,排降序建小堆。...4.2 排序实现 关于堆排序我前面单独写了文章来介绍,具体细节请移步至:【数据结构】堆的应用 – 堆排序和TopK问题 4.3 复杂度与稳定性 时间复杂度 堆排序建堆的时间复杂度为 O(N),选数的时间复杂度为...StackPush(&st, left); StackPush(&st, keyi - 1); } } StackDestory(&st); } 注意事项 1、由于这里我们使用了数据结构中的栈

51500

数据结构】经典八排序(Plus版)

希尔排序的时间复杂度不好计算,因为gap的取值方法很多,导致很难去计算,因此在好些树中给出的希尔排序的时间复杂度都不固定: 《数据结构(C语言版)》— 严蔚敏 《数据结构-用面相对象方法与C++描述》...选择排序 3.1 基本思想 每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完 。...,右侧数据比它。...第二步:同样根据右找小,左找的原则直到相遇,不过具体的行动有所改变。...begin, keyi - 1); QuickSort(a, keyi + 1, end); } } 6.6 快速排序非递归实现 递归的最大问题就是极端场景下,深度太深,会发生栈溢出,因此我们需要用数据结构中的栈来模仿递归过程

31600

数据结构】什么是数据结构?

个人主页:修修修也 所属专栏:数据结构 ⚙️操作环境:Visual Studio 2022 数据结构的定义 数据结构(Data Structure)是计算机存储,组织数据的方式,指相互之间存在一种或多种特定关系的数据元素的集合...而: 数据结构是一门研究非数值计算的程序设计问题中的操作对象,以及它们之间的关系和操作等相关问题的学科. 通俗点讲,数据结构就是一门研究上面那些结构中的数据,以及它们之间的关系和操作的学科....程序设计=数据结构+算法 结语 当我们搞清楚什么是数据结构后,接下来在数据结构绪论部分我们还将分4小节继续了解数据结构的基本概念和术语,逻辑结构与物理结构以及抽象数据类型方面的知识,感兴趣的朋友可以点击下方链接跳转到相应的博客...: 相关文章推荐 【数据结构】什么是数据结构?...【数据结构】基本概念和术语 【数据结构】逻辑结构与物理结构 【数据结构】抽象数据类型 ...... 数据结构绪论篇思维导图:

7910

Python数据结构——基础数据结构

当你开始学习编程,了解和掌握基础数据结构是至关重要的,因为它们是解决问题和管理数据的基础。本文将重点介绍Python中的五个基础数据结构:列表、元组、字典、集合和字符串,并使用示例代码进行详细说明。...列表(List) 列表是一种有序、可变的数据结构,它允许你存储多个元素,这些元素可以是不同类型的数据。创建列表使用方括号 [],并在其中包含元素,元素之间用逗号 , 分隔。...my_tuple[1] = 4 # 这将引发TypeError错误 字典(Dictionary) 字典是一种键-值对映射的数据结构,用于存储相关数据。字典使用花括号 {} 来定义。...Python' 以上是Python中的五种基础数据结构的简要介绍,它们在编程中非常有用。了解它们的特性和基本操作将帮助你更好地处理和组织数据。...在实际编程中,你将频繁使用这些数据结构,因此熟练掌握它们对于编程非常重要。

13910

数据结构】八排序之计数排序算法

计数排序的核心在于将输入的数据值转化为键存储在额外开辟的数组空间中。作为一种线性时间复杂度的排序,计数排序要求输入的数据必须是有确定范围的整数。...算法动图演示如下: 计数排序的实现思路: 统计每个数据出现的次数 按序输出 虽然计数排序实现思路比较简单,但我们还是有一些细节需要注意: 绝对映射和相对映射: 绝对映射:如下图,数据的数值和数组下标是一一对应的...,这种计数方式叫做绝对映射 绝对映射的缺点:开辟数组占用空间,不能够排负数 相对映射:如下图,数据在数组中是按照数值的相对大小来映射的,这种计数方式叫做相对映射....相对映射较好的解决了绝对映射的缺点,但当遇到待排数据分布较为分散且跨度较大时,就不太适合使用计数排序来进行排序了....开辟大小为max-min+1小的数组用以计数. 遍历数组计数. 将计数数组中记录的数据恢复到原数组中.

6310

数据结构】八排序之快速排序算法

它的基本思想是: 通过一趟排序将待排数据分割成独立的两部分 其中一部分数据的关键字均比另一部分数据的关键字小 可分别对这两部分数据继续进行排序,以达到整个序列有序的目的....再设置一个左指针,使其从前向后遍历,找到比基准值(key)的元素就停下来. 当左右指针都找到相应元素时,交换它们找到的元素....——《数据结构》严蔚敏 也就是说,快排的时间复杂度我们可以认为是O(nlogn),但当遇到原数组本身有序的情况下,其时间复杂度就会退化至O(n^2),这个其实很好理解,举个例子就明白了: 当最优情况下...快速排序改非递归的代码实现 因为快排改非递归时要借助栈结构,因此我先将栈相关定义的头文件贴在这里,具体栈的C语言完整实现可以移步我的另一篇博客,在文末有数据结构栈实现的完整代码,大家可以直接粘贴过来使用...: 【数据结构】C语言实现顺序栈(附完整运行代码) http://t.csdnimg.cn/FL0V3(注:如果本身没有自己实现数据结构栈的工程文件的,一定要将该博客末尾的Stack.h文件和Stack.c

8410

数据结构】-图解八排序(思路+实现+总结)

注:这里的八排序指直接插入,希尔,选择,堆排,冒泡,快排,归并,计数 八排序汇总图: 二、排序概念及应用 1、概念 排序: 所谓排序,就是使一串记录,按照其中的某个或某些关键字的大小...while (end >= 0)//进行当前趟次的插入排列 { //升序 if (a[end] >x)//有序数列的数据比插入数据,则往后挪动 { a[end +...实际中很少使用 时间复杂度:O(N^2) 空间复杂度:O(1) 稳定性:不稳定 2、堆排序 堆排序是指利用堆(数据结构)进行选择数据的一种排序算法 基本思想: 原则: 先将原数组建成堆,需要注意的是排升序要建大堆..., int n,int parent) { int child = parent * 2 + 1; while (child < n) { //找到数据的子结点 if (child +...快速排序整体的综合性能和使用场景都是比较好的,所以才敢叫快速排序 时间复杂度:O(N*logN) 空间复杂度:O(logN) 稳定性:不稳定 3、快排非递归 基本思想; 对于递归函数在内存实际上是在栈中进行开辟函数栈帧,这里我们使用数据结构中的栈来模拟内存中的栈

33720
领券