
数据结构和算法
文章平均质量分 83
主要记录数据结构和算法的知识点和例题
CILMY23
一名在读大三生,努力分享自己所学。
个人分享:我们必须选择自己想成为什么样的人,不是一次性地选择,而是重复地一而再地做出选择,终其一生。
注:周一到周五更新,周末回私信。
展开
-
【数据结构和算法】10.堆的模拟故事:用图文解析讲述它的成长之旅
Hello,大家好,这里是 CILMY23 的频道,上期我们接触了树,知道了堆(Heap)总是一棵完全二叉树,今天我们就来深入探究一下堆的模拟实现。个人分享:每个人的内心都是一片海洋,每一路人都如此。每个人都是思想、见解和情感的宇宙。原创 2024-09-05 00:00:00 · 877 阅读 · 0 评论 -
【数据结构和算法】9.树和堆的奇妙世界:数据结构的无尽可能
hello,大家好,这里是CILMY23的频道,今天我们接触的是树,这是数据结构中的树,那接下来就跟随我的视角来看看吧。原创 2024-09-04 10:14:11 · 1263 阅读 · 0 评论 -
【数据结构与算法】选择排序篇----详解直接插入排序和哈希排序【图文讲解】
插入排序是一种简单的插入排序方法,其基本思想是:把待排序的记录按其关键码值的大小逐个插入到一个已经排好序的有序序列中,直到所有的记录插入完为止,得到一个新的有序序列。原创 2024-07-15 07:00:00 · 1336 阅读 · 7 评论 -
【数据结构和算法】5.超详解析,带你手撕单向链表(图文解析,附带源码)
对链表中的数据元素来说,除了存储其本身的信息外,还需存储一个指示其后继的信息(地址),这两部分信息组成数据元素的存储映像,称为节点或者结点。它在内存中有两个域,其中存储数据元素本身的信息的域叫做数据域,存储后继位置地址的域称为指针域。指针域中存储的信息就叫做指针或链。n个结点链结成链表,因为链表中的每个结点只包含一个指针域,故又称为线性链表或者单链表。原创 2024-02-28 15:10:58 · 932 阅读 · 0 评论 -
【数据结构和算法】4.超详细解析动态顺序表的实现(图文解析,附带源码)
分情况讨论,当空间不够的时候我们如果要从尾部插入数据的话,这个时候就要扩容了,我们将扩容写到一个函数里,因为会常用,所以我们写一个函数,用来检查空间。但是在插入之前我们需要检查指针,指针不能为空。(同理在数据的初始和销毁中同样也要补充上)原创 2023-11-09 15:10:45 · 563 阅读 · 4 评论 -
【数据结构和算法】3.线性表和顺序表的初步介绍
欢迎来sobercq的博客喔,本期系列为【数据结构和算法】第三篇线性表和顺序表。原创 2023-11-09 00:05:44 · 135 阅读 · 1 评论 -
【数据结构和算法】2.算法的空间复杂度
空间复杂度也是一个数学表达式,是对一个算法在运行过程中临时占用存储空间大小的量度。空间复杂度不是程序占用了多少bytes的空间,因为这个也没太大意义,所以空间复杂度算的是变量的个数。空间复杂度计算规则基本跟时间复杂度类似,也使用大O渐进表示法。注意:若输入数据所占空间只取决于问题本身和算法无关,则只需要分析除输入和程序之外的额外空间,否则应同时考虑输入本身所需空间。若额外空间相对于输入数据量来说是常数,则称此算法为原地工作。常数阶O(1)线性阶O(n)平方阶O(n²)对数阶O(logn)原创 2023-11-08 21:06:31 · 145 阅读 · 1 评论 -
面试题 17.04. 消失的数字,数组nums包含从0到n的所有整数,但其中缺了一个。请编写代码找出那个缺失的整数。你有办法在O(n)时间内完成吗?
空间换时间,仍然创建一个新的空间,将对应的数字一个个放进去,进行比对,如果不对则那个数字就是消失的数字。的所有整数,但其中缺了一个。你有办法在O(n)时间内完成吗?时间复杂度超过O(N),冒泡排序的复杂度为O(N^2),所以在oj上是没法跑的。先将数组中的数据按照顺序排列,再用其余数据比对,若不等于就为消失的数字。求和,先求出原数组的和,再减去顺序数列,即可得到消失的数字。异或求和,利用异或的特点,找出消失的数字。本题相对书上原题稍作改动。原创 2023-11-08 00:07:00 · 115 阅读 · 1 评论 -
189. 轮转数组,给定一个整数数组 nums,将数组中的元素向右轮转 k 个位置,其中 k 是非负数。
一共进行两次循环,一次走k次,一次走numsSize-k次,所以时间复杂度从原来的O(N^2)换到了O(N),这就是用空间换时间的做法。最开头有个k=k%numsize,这个是为了节省时间,当k=numsize^x的时候,其实是没有做逆转的(因为数据调用一圈又回到原点了)在这里冒泡核心就是把最右边的一个数据移动到最左边的空间当中,这样就完成了一次的逆转数组,具体完成多少次,通过i的次数来控制,用空间换时间,额外建立一个新空间,用来存储逆转后的数据,最后把数据copy回原来的数组当中。时间复杂度:O(N)原创 2023-11-07 14:59:35 · 331 阅读 · 0 评论 -
【数据结构和算法】1.前言和算法的时间复杂度讲解(下)——深入理解时间复杂度
一、知识点回顾1.时间复杂度找到某条基本语句与问题规模N之间的数学表达式,就是算出了该算法的时间复杂度。2.时间复杂度的大O的渐进表示法推导大O阶方法:1、用常数1取代运行时间中的所有加法常数。2、在修改后的运行次数函数中,只保留最高阶项。3、如果最高阶项存在且不是1,则去除与这个项目相乘的常数。得到的结果就是大O阶。二、深入理解——时间复杂度的讲解例题。原创 2023-11-07 11:29:28 · 369 阅读 · 0 评论 -
【数据结构和算法】1.前言和算法的时间复杂度讲解(上)
在计算机科学中,算法的时间复杂度是一个函数,它定量描述了该算法的运行时间。那这个时候我们就取N,那又有问题了,为什么系数没了呢……原创 2023-11-02 00:24:50 · 108 阅读 · 1 评论