c++
文章平均质量分 50
Riley189
学习 很需要反思与记录
展开
-
leetcode刷题记录
【一周刷爆LeetCode,算法大神左神(左程云)耗时100天打造算法与数据结构基础到高级全家桶教程,直击BTAJ等一线大厂必问算法面试题真题详解】 https://www.bilibili.com/video/BV13g41157hK/?主要还是每次看视频效率较高,所以根据左神教程,进行针对性速刷,后期进行代码和笔记整理。有看到还有一个直接自己刷的。原创 2023-10-21 20:29:30 · 167 阅读 · 0 评论 -
线性表之顺序表的c++代码
在我们的函数实现上参数,全部是位序,在别人使用函数的时候全是使用的是该数组的实际第几位,而类里面的length, maxlength当前长度和最大长度也是位序,而到了L[]数组上的时候就全是位序-1了。线性表由于物理存储方式的不同有两种:顺序表和链表。我的这个数组是要是超过了其当前的最大存储量,就自动扩大容量,但是我初始化的时候又专门设置了一个最大容量,很奇怪总觉得逻辑有点冲突。2、线性表就是线性的连续的,所以不存在有 数组第1~10位的数据,要插入一个第100位的数据,只能最大插入到到11位。原创 2022-10-26 20:23:08 · 896 阅读 · 1 评论 -
堆排序的c++代码实现
堆排序的c++代码实现,建立大根堆,然后每次利用大根堆的第一个数(最大)和最后一个叶节点交换,然后将这个叶节点从树中删去(因为已经排到了他该在位置,就是当前的还没有排序好的最大值,放在最末尾),然后利用保持大根堆特性,将头沉沉沉沉到他该在的位置,不断循环。基于大根堆的堆排序就是得到递增序列,机遇小根堆的堆排序得到就是递减序列。堆排序,主要分成两步,第一步就是大根堆的建立,第二步就是不断找出最大值(体现了选择排序,为选择空间复杂度:o(1)时间复杂度:o(nlogn)上面有写,不稳定数组可实现原创 2022-10-22 17:45:11 · 1563 阅读 · 0 评论 -
插入排序相关例题以及C++代码实现
c++交换排序代码:冒泡排序相关,双向冒泡排序,正反交替冒泡。快速排序相关1、将枢轴值从第一位改成随机位。特别的快排想法应用,有两种特殊的数组在利用快排的每轮左右交换的思想能够很方便的实现:1、只有两种数字 0000011111想让0全在1前面,因为只有两种数字,在一个数通过一轮交换后,就所有数据就排好了,所以总的时间复杂度o(n)2、有三种数字 000001111122222 让0在1前面,1在2前面如何排,同样类似的思路具体看题看下面思路原创 2022-10-22 11:40:44 · 483 阅读 · 0 评论 -
快速排序的c++代码实现
头文件是快速排序的代码,mian函数是一个测试样例。关于时间和空间复杂度:时间复杂度与空间复杂度都与递归深度有关,递归深度最好就是二叉树(o(logn)),最坏就是每次都是最边边上的情况(顺序的情况,无论顺序还是逆序都是需要)o(n)的时间。空间复杂度:最好:o(logn), 最坏:o(n)。时间复杂度:最好:o(nlogn),每次递归都是能够选择到能够排到中间的值。最坏:o(n^2),顺序逆序稳定性:不稳定。适用于:数组可实现,链表不太行,因为有往前往后找,以及取左取右原创 2022-10-20 15:03:10 · 1026 阅读 · 0 评论 -
冒泡排序的c++代码实现
头文件是冒泡排序的代码,mian函数是一个测试样例,关于时间和空间复杂度:空间复杂度:o(1) 常数个辅助单元,时间复杂度:最好:o(n),当序列已经是已经排好序的情况下(顺序)(只需要从后往前访问一轮flag是false就提前return),要是为逆序不满足,且为最坏:o(n^2),逆序,平均:o(n^2),稳定性:稳定,适用于:数组和链表都可实现原创 2022-10-18 20:17:34 · 1822 阅读 · 0 评论 -
希尔排序的c++代码实现
头文件是希尔排序的代码,mian函数是一个测试样例。时间复杂度:依赖于增量序列的函数的情况,最优:o(n^1.3)这个数学上还没有证明,在特定范围能够达到这个数,最坏+平均:o(n^2),就是当希尔最开始就是n/n=1的情况其实就退化成了插入排序,所以o(n^2)1、在希尔里面 虽然data[0]是用来临时存储变量的,但是不是哨兵,因为j-d这个不一定就能到0这个位置去,所以还是需要每次判断j是否还>0,不需要含0因为只是一块费空2、哈希是先间隔n/2一组(也可以是其他的n/3...),然后是间隔n/原创 2022-10-16 19:10:46 · 767 阅读 · 0 评论 -
插入排序的c++代码实现
关于时间和空间复杂度:无哨兵,no二分查找:时间复杂度:最优:o(n)就直接不用去查找以及移动了,最坏+平均:o(n^2),空间复杂度:o(1) 只有一个key,有哨兵,no二分查找:时间复杂度:最优:o(n)就直接不用去查找以及移动了,最坏+平均:o(n^2) 只是比无哨兵查找每次少个条件,空间复杂度:o(1) 可能就i,j。有哨兵,采用二分查找:时间复杂度:最优:o(n)就直接不用去查找以及移动了,最坏+平均:o(n^2) 虽然查找变成了logn,但是每次还是需要把从low到i-1的位置全部移动一次,和原创 2022-10-16 17:22:02 · 1870 阅读 · 0 评论 -
数据结构刷题记录
后面就是笔记和代码的整理,大佬用的是java,后续我应该会用c++整理出来。主要是发现在笔试的很多题还是不会,所以该做的该刷的还是需要去刷。开一个数据结构和算法 leetcode的刷题记录。原创 2022-10-14 08:31:38 · 270 阅读 · 0 评论 -
C++ new/delect malloc/free区别
由于malloc/free是库函数而不是运算符,不在编译器控制权限之内,不能够把执行构造函数和析构函数的任务强加于malloc/free。由于内部数据类型的“对象”没有构造与析构的过程,对它们而言malloc/free和new/delete是等价的。2、new 不止是分配内存,而且会调用类的构造函数,同理delete会调用类的析构函数,而malloc则只分配内存,不会进行初始化类成员的工作,同样free也不会调用析构函数。示例用malloc/free和new/delete如何实现对象的动态内存管理。转载 2022-10-03 17:34:06 · 227 阅读 · 0 评论