初阶数据结构
文章平均质量分 88
积累了一些初阶数据结构知识
LaNzikinh篮子
山不让纤介,而成其危,海不辞丰盈,而成其邃
展开
-
如何设计循环队列(两种方法)
前面有提到过队列的知识,这次来说一下怎么设计一个循环队列一.循环队列(力扣). - 力扣(LeetCode). - 备战技术面试?力扣提供海量技术面试资源,帮助你高效提升编程技能,轻松拿下世界 IT 名企 Dream Offer。设计你的循环队列实现。循环队列是一种线性数据结构,其操作表现基于 FIFO(先进先出)原则并且队尾被连接在队首之后以形成一个循环。它也被称为“环形缓冲器”。循环队列的一个好处是我们可以利用这个队列之前用过的空间。原创 2024-03-24 22:09:06 · 1257 阅读 · 56 评论 -
栈的详解和例题(力扣有效括号)
之前讲了,很多关于栈的习题,还有栈与队列的互相转换,还是补一篇栈的详解一.什么是栈栈(stack)是一种只允许在一端进行插入和删除操作的线性表。这一端称为栈顶,另一端称为栈底。栈的特点是后进先出(LIFO),即最后进入的元素最先出来。栈可以用来存储局部变量和一些数据,当函数或线程执行完毕,栈就会释放空间。原创 2024-04-06 22:19:57 · 1397 阅读 · 94 评论 -
快速排序详解
前面讲了很多的排序算法,今天我们来讲一下快速排序的多种方法快速排序快速排序是对冒泡排序算法的一种改进,同冒泡排序一样,快速排序也属于交换排序,通过元素之间的比较和交换位置来达到排序的目的快速排序原理 快速排序是基于“分治法”原理实现,所谓分治法就是不断的将原数组序列按照一定规律进行拆分,拆分后各自实现排序直到拆分到序列只剩下一个关键字为止。今天说了快排的3种实现方法,但是多次调用函数递归,可能回栈溢出,所以还要有快排的非递归的实现,下次在来讲解,还有最后几个排序的收尾。原创 2024-04-17 22:47:04 · 1042 阅读 · 75 评论 -
快排非递归与计数排序
计算机在实现递归时会调用系统的堆栈,这很消耗计算机内存资源,所以采用非递归算法的本质就是手动模拟系统的堆栈调用来降低computer资源的消耗,有时候还会造成栈溢出所以这些厉害的排序我们都要掌握他的非递归,然后在在补充一个计数排序。初级的排序算法就是这些了,还有一些不常用的和一些难的,等学了更多的知识我们再去了解。原创 2024-04-22 12:07:58 · 1415 阅读 · 73 评论 -
斐波那契数列
很多人都对递归有了解,但是为尾递归很少,所以这次来专门讲一讲关于尾递归的一些问题。如果一个函数中所有递归形式的调用都出现在函数的末尾,我们称这个递归函数是尾递归的。因为在一些题目的做法中,我们可以发现递归的使用有局限性,有时候会占用相当大的空间。比如斐波那契问题,代码很容易用递归去写,但是浪费了大量的内存,一个数会重复计算多次,所以我们来使用尾递归。这里引用一个我看别人说的一句话,我认为非常对普通递归的结果是返回值,尾递归的结果是参数。完全可以这样理解。尾递归的优化原理。原创 2024-04-28 13:00:00 · 1201 阅读 · 75 评论 -
归并排序详解(非递归)
我们之前讲了希尔排序直接插入排序堆排序,我们今天来讲一讲归并排序,讲之前我们先要知道归并排序的思想和什么是归并排序归并排序,是创建在归并操作上的一种有效的排序算法。算法是采用分治法的一个非常典型的应用,且各层分治递归可以同时进行。归并排序思路简单,速度仅次于快速排序,为稳定排序算法,一般用于对总体无序,但是各子项相对有序的数列。归并排序是算法中非常重要的一个方法,无论是递归还是非递归,我们都应该要搞清楚。原创 2024-04-05 22:41:17 · 1332 阅读 · 51 评论 -
希尔排序
今天我们来讲一下排序算法中的插入排序中的希尔排序,插入排序分为两种,一种是直接插入排序,另一种就是希尔排序。原创 2024-03-30 14:17:14 · 789 阅读 · 47 评论 -
环形链表详解(让你彻底理解环形链表)
环形链表是一种特殊类型的链表数据结构,其最后一个节点的"下一个"指针指向链表中的某个节点,形成一个闭环。换句话说,链表的最后一个节点连接到了链表中的某个中间节点,而不是通常情况下连接到空指针 (null)原创 2024-03-02 20:22:59 · 1373 阅读 · 42 评论 -
顺序表详解(如何实现顺序表)
在进入顺序表前,我们先要明白,数据结构的基本概念。一、数据结构的基本概念数据结构是由“数据”和“结构”两词组合而来。所谓数据就是?常见的数值1、2、3、4.....、姓名、性别、年龄,等。这些都是数据。所谓结构就是当我们想要使用大量同⼀类型的数据时,我们可以借助数组这样的数据结构将大量的数据组织在⼀起,结构也可以理解为组织数据的方式。有了顺序表,为什么还要学习其他的数据结构?原创 2024-02-22 00:11:33 · 1093 阅读 · 16 评论 -
单链表详解(如何实现单链表)
单链表的缺点就是不可以随机访问,而顺序表却可以做到,说明单链表也有缺陷,那什么结构可以让我们更好?只有继续的学习才会知道。原创 2024-03-09 03:09:27 · 565 阅读 · 40 评论 -
初识二叉树
树是由一个集合以及在该集合上定义的一种关系构成的。集合中的元素称为树的节点,所定义的关系称为父子关系。父子关系在树的节点之间建立了一个层次结构。在这种层次结构中有一个节点具有特殊的地位,这个节点称为该树的根节点,或称为树根。二叉树是n(n>=0)个结点的有限集合,该集合或者为空集(称为空二叉树),或者由一个根结点和两棵互不相交的、分别称为根结点的左子树和右子树组成。return;//是结点就加加else(*psize++);//也是递归,分治先左子树在右子树。原创 2024-03-22 19:01:03 · 994 阅读 · 62 评论 -
堆排序(c语言)
堆排序(Heapsort)是指利用堆这种数据结构所设计的一种排序算法。堆积是一个近似完全二叉树的结构,并同时满足堆积的性质:即子结点的键值或索引总是小于(或者大于)它的父节点。堆它分两种结构逻辑结构和物理结构逻辑结构堆是一种很好做调整的结构,在算法题里面使用频度很高。常用于想知道最大值或最小值的情况,比如优先级队列,作业调度等场景。原创 2024-03-20 18:54:04 · 935 阅读 · 58 评论