大厂敲门砖算法
文章平均质量分 83
hh
小码农UU
百引
展开
-
算法给小码农计数排序尊者
文章目录排序常见的排序算法 扩展计数排序 不进行数据的比较,而是统计数据出现的次数计数排序计数排序的特性总结测性能1000 一千10000 一万100000 十万1000000 一百万10000000 一千万排序总结稳定性八大排序总结排序常见的排序算法 扩展计数排序 不进行数据的比较,而是统计数据出现的次数思想:计数排序又称为鸽巢原理,是对哈希直接定址法的变形应用。 操作步骤统计相同元素出现次数根据统计的结果将序列回收到原来的序列中我原创 2021-12-03 18:10:06 · 1612 阅读 · 48 评论 -
算法给小码农归并排序列阵
文章目录排序常见的排序算法常见排序算法的实现归并排序基本思想递归写法通过调试看一下现象归并顺序归并排序递归子函数归并排序递归实现非递归写法2^n^个元素的数组随便几个元素的数组修正下标归并排序非递归实现 修正下标归一部分拷一部分归并排序非递归实现 归一部分拷一部分时间复杂度测性能1000 一千10000 一万 ==先抛弃选择和冒泡==100000 十万 ==再抛弃直接插入==1000000 一百万10000000 一千万代码S原创 2021-12-01 13:31:30 · 785 阅读 · 40 评论 -
算法给小码农冒泡排序铭纹,快速排序四极
文章目录排序常见的排序算法常见排序算法的实现冒泡排序 ==也是我们本身接触最早的排序 很简单的一个排序==完整冒泡排序代码快速排序(无敌的排序)将区间按照基准值划分为左右两半部分的常见方式有:1.hoare版本==(发明快排的人用的方法)==最左边做key最右边做key测性能选1000 一千选10000 一万选100000 十万选1000000 一百万选10000000 一千万但是想想上面快排有没有什么缺陷 明明是秒男还想在特殊情况下当持久男 哈哈如原创 2021-11-27 21:26:08 · 7289 阅读 · 71 评论 -
算法给小码农选择排序搬血,堆排序化灵
文章目录排序常见的排序算法常见排序算法的实现选择排序 ==最慢排序(最好理解)所以搬血==基本思想:直接选择排序数据交换 ==剥离出来其他函数也会用到 我明明是简洁之人为了一时的高级而忘记了朴素罪过罪过==选择排序堆排序向下调整函数堆排序代码测性能 ==让你看看什么叫堆====1000大小数组 一千====10000大小数组 一万====100000大小数组 十万====1000000大小数组 一百万====10000000大小数组 一千万 我们不带选择,插入玩太拉原创 2021-11-23 07:17:55 · 1118 阅读 · 71 评论 -
算法给小码农插入排序洞天,希尔排序轮回
文章目录排序排序的概念及其运用排序的概念排序运用==来上京东====大学排名==常见的排序算法常见排序算法的实现插入排序基本思想==但是数组肯定不是有序的,所以我们得先让数组有序==先把打印数组给剥离出来插入排序希尔排序( 缩小增量排序 ) (反正希尔牛逼)希尔排序步骤==**单组多躺**====**多组插入**====**多组一锅炖(要是分组插麻烦我们也可以一锅炖)**====**多次预排序(gap > 1)+直接插入(gap == 1)**==测直接插入排序和希尔排序的性能(让你看看什么才叫希原创 2021-11-20 05:00:00 · 5616 阅读 · 47 评论 -
算法给小码农二叉树OJ淬体
文章目录二叉树OJ淬体例1:[单值二叉树](https://leetcode-cn.com/problems/univalued-binary-tree/)题目例2:[二叉树的前序遍历](https://leetcode-cn.com/problems/binary-tree-preorder-traversal/)题目例3:[二叉树的中序遍历](https://leetcode-cn.com/problems/binary-tree-inorder-traversal/)题目例4:[二叉树的后序遍历](h原创 2021-11-18 05:00:00 · 999 阅读 · 50 评论 -
算法给小码农链式二叉树-----一根草可斩星辰
文章目录链式二叉树那么链式二叉树有什么好的地方呢二叉树的遍历前序、中序以及后序遍历按照规则,二叉树的遍历有:前序/中序/后序的递归结构遍历:(上图为例图)(前中后访问根的时机不一样)分治二叉树二叉树节点我们把上面的树建好二叉树前序遍历二叉树中序遍历二叉树后序遍历二叉树节点个数次数用传址的方式次数用返回值的方式(假如我是代码我必然要嫁给这条代码)二叉树叶子节点个数二叉树第k层节点个数二叉树深度/高度二叉树查找值为x的节点代码BinaryTree.hBinaryTree.ctest.c链式二叉树我们需要原创 2021-11-15 05:00:00 · 16449 阅读 · 84 评论 -
算法给小码农堆排序至尊骨
文章目录堆排序升序一种非常正常的想法 空间复杂度O(N)堆升序函数HeapSort堆排序测试函数建堆(向上向下为建堆)向上调整(建大堆)交换排序&&再向上调整堆排序代码堆排序测试向下调整排升序 构建小堆排升序 构建大堆堆排序测试堆排序降序向上调整 (建小堆)向下调整(建小堆)建堆的时间复杂度堆排序升序一种非常正常的想法 空间复杂度O(N)把数组中的元素全都push到小堆中,然后再取堆顶元素重新给数组,就可以达到升序的效果了堆升序函数HeapSort//升序void原创 2021-11-12 06:00:00 · 3991 阅读 · 56 评论 -
算法给小码农TopK重瞳双目
文章目录Topk1000个数中找到最大的前十个方式1:方式2:==方式3:==Topk打印函数TopkPrint没有修改的接口见 [算法给小码农堆魂器--铁血柔情](https://blog.csdn.net/diandengren/article/details/121218819?spm=1001.2014.3001.5501)改掉的接口向上调整函数向下调整函数然后在Heap.h文件中加入Topk在n个数中找出最大的前K个 or 在n个数中找出最小的前K个(n>K)1000个数中找原创 2021-11-10 01:16:41 · 1000 阅读 · 33 评论 -
算法给小码农堆魂器--铁血柔情
文章目录堆堆的概念及结构堆的性质堆的结构(这里实现大堆)堆的结构体堆初始化函数HeapInit堆销毁函数HeapDestroy堆打印函数HeapPrint向上调整函数AdjustUp堆插入函数HeapPush判断堆是否为空函数HeapErmpy返回堆大小函数HeapSize交换函数Swap向下调整函数AdjustDown堆删除函数HeapPop代码Heap.hHeap.ctest.c堆数据结构中的堆不同于操作系统中的堆(操作系统中的堆是用来存储动态内存的),数据结构中的堆是数据的存储方式。数据结构中的堆原创 2021-11-09 05:00:00 · 821 阅读 · 27 评论 -
算法给小码农二叉树魂铠战衣
文章目录二叉树树的概念及结构树的概念==注意:树形结构中,子树之间不能有交集,否则就不是树形结构==如何表示树呢(其他方法不说了最近很忙,直接玩最牛逼的方法)二叉树概念及结构概念特殊的二叉树:满二叉树完全二叉树二叉树的性质还有明天定时再发 略略略[主要是为了偷塔哈哈哈]二叉树树的概念及结构树的概念树是一种非线性的数据结构,它是由n(n>=0)个有限结点组成一个具有层次关系的集合。把它叫做树是因为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的。有一个特殊的结点,称为根结点,根节点没原创 2021-11-06 05:00:00 · 587 阅读 · 8 评论 -
算法开启循环队列武魂
文章目录设计循环队列题目数组形式(通过下标控制来达到循环的效果)环队结构体(数组)环队初始化判断环队为空判断环队为满环队入数据并入成功返回真环队删数据并删成功返回真环队取队头数据(对空返回-1)环队取队尾数据(对空返回-1)环队销毁环队(数组实现)链表形式环队结构体(链表)环队初始化判断环队为空判断环队为满环队入数据并入成功返回真环队删数据并删成功返回真环队取队头数据(对空返回-1)环队取队尾数据(对空返回-1)环队销毁环队(链表实现)设计循环队列题目我们会使用一种队列叫循环队列。如操作系统课程讲解原创 2021-11-05 06:43:05 · 1028 阅读 · 40 评论 -
算法开启栈转队列武魂
文章目录==**栈接口见 [算法开启小码农栈血脉](https://blog.csdn.net/diandengren/article/details/121055584?spm=1001.2014.3001.5501)**==用栈实现队列题目队结构体队初始化入“队”出“队”并取出队元素返回队头判断队空队列销毁队列代码(接口代码去我之前文章取) [算法开启小码农栈血脉](https://blog.csdn.net/diandengren/article/details/121055584?spm=1001.原创 2021-11-03 05:00:00 · 628 阅读 · 25 评论 -
算法开启队列转栈武魂
文章目录==**队列接口见 [算法开启小码农队列血脉](https://blog.csdn.net/diandengren/article/details/121072953?spm=1001.2014.3001.5501)**==用队列实现栈题目栈结构体栈初始化入“栈”出“栈”并取栈顶元素取栈顶元素判断栈空栈销毁栈代码(接口代码去我上面文章取) [算法开启小码农队列血脉](https://blog.csdn.net/diandengren/article/details/121072953?spm=100原创 2021-11-02 05:00:00 · 1217 阅读 · 31 评论 -
算法开启小码农队列血脉
队列队列的概念及结构队列:只允许在一端进行插入数据操作,在另一端进行删除数据操作的特殊线性表,队列具有先进先出FIFO(First In First Out)入队列:进行插入操作的一端称为队尾出队列:进行删除操作的一端称为队头队列的实现队列也可以数组和链表的结构实现,使用链表的结构实现更优一些,因为如果使用数组的结构,出队列在数组头上出数据(就会挪动数据),效率会比较低代码模块队列节点typedef int QDatatype;typedef struct QueueNode原创 2021-11-01 05:00:00 · 1873 阅读 · 34 评论 -
算法开启小码农栈血脉
栈栈的概念及结构栈:一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端称为栈顶,另一端称为栈底。栈中的数据元素遵守后进先出LIFO(Last In First Out)的原则。压栈:栈的插入操作叫做进栈/压栈/入栈,入数据在栈顶出栈:栈的删除操作叫做出栈。出数据也在栈顶栈的实现栈的实现一般可以使用数组或者链表实现,相对而言数组的结构实现更优一些。因为数组在尾上插入数据的代价比较小。栈节点typedef int STDataType;typed原创 2021-10-30 19:55:40 · 1328 阅读 · 34 评论 -
算法开启小码农双链表血脉
文章目录==也欢迎大家能来到我们小伙伴的社区 [慧编程开源俱乐部](https://bbs.csdn.net/forums/mzt)==双链表双链表结构图双链表节点双链表初始化函数ListInit双链表尾插函数ListPushBack双链表打印函数ListPrint双链表尾删函数ListPopBack双链表头插函数ListPushFront获得双链表节点函数BuyListNode双链表头删函数ListPopFront双链表查找函数ListFind双链表插入函数ListInsert(pos之前插入因原创 2021-10-29 23:16:53 · 1770 阅读 · 35 评论 -
算法大神对小码农说复制随机链表可以单独拿出来讲讲
文章目录复制带随机指针的链表题目思想==普通拷贝====顺藤摸瓜==(这个是真的奇兵记,暗度陈仓的感觉)==脱裤子还需提裤子人==(上面暗度陈仓,这个就是单刀直入)代码实现==cur为NULL的时候就是停止copy的时候====有人说为什么不在上面malloc节点的时候就链,因为那时候小孩还没出生你就让你的还在上学吗,没错为了卷你们,我准备偷偷生个小孩==复制带随机指针的链表天下傻逼独一个就是我,我忘记了选c语言,用c++结果错误看一脸懵逼题目这题链表的复制难的地方就是随机指针random 如何原创 2021-10-28 09:50:31 · 976 阅读 · 18 评论 -
算法大神对小码农说环形链表可以单独拿出来讲讲
文章目录环链环形链表题目分析延伸问题:==1.为什么fast和slow会在环中相遇,会不会有这么一种情况呢。就是在环中一直交错永远遇不上?请证明一下。==证明:==这里就又衍生出了一个问题就是slow与fast只要是步差为一就可以相遇====2.为什么slow走一步,fast走两步呢?fast可不可以走大于两步呢?==[环形链表 II](https://leetcode-cn.com/problems/linked-list-cycle-ii/)题目分析环链环形链表题目分析我们剖析一下代码原创 2021-10-26 23:51:42 · 1531 阅读 · 22 评论 -
身家过亿的帝都富豪来参加1024节专属盛典,小码农献上单链表一篇来庆祝盛典
文章目录身家过亿的帝都富豪来参加1024节专属盛典,小码农献上单链表一篇来庆祝盛典顺序表的缺陷链表链表的概念及结构链表的分类**1.单向或者双向****2.带头或者不带头****3.循环或者非循环**链表的实现无头单向单链表节点单链表打印函数SListPrint单链表尾插函数SListPushBack获得单链表节点函数单链表头插函数SListPushFront单链表尾删函数SListPopBack单链表头删函数SListPopFront单链表查找函数查询后修改单链表插入函数单链表后插函数单链表删除函数SLi原创 2021-10-22 16:45:39 · 2590 阅读 · 56 评论 -
身价过亿的帝都富豪对小码农说顺序表会了吗
文章目录有幸被富豪赏识,顺序表怎能不会联动文章 [五万字超详细Linux知识点](https://blog.csdn.net/qq_42832862/article/details/120793871)顺序表线性表顺序表(本质上就是数组)概念及结构顺序表一般可以分为:1. 静态顺序表:使用定长数组存储元素。2. 动态顺序表:使用动态开辟的数组存储。接口函数(==这里教你闭坑,不然有时候你不知道怎么死的(值传递与址传递的区别)==)顺序表初始化 SeqListInit值传递址传递尾插函数SeqListPush原创 2021-10-17 07:58:13 · 1277 阅读 · 42 评论 -
身家过亿的帝都富豪对小码农说你时空复杂度会了吗
文章目录被富豪注意了,我赶紧写下时空复杂度这篇文章==联动文章 [身价过亿的女王对小码农说中断会了吗](https://blog.csdn.net/qq_42832862/article/details/120736286)==什么是数据结构算法的时间复杂度和空间复杂度1.算法效率如何衡量一个算法的好坏==算法的复杂度==时间复杂度时间复杂度的概念注意:大O的渐进表示法另外有些算法的时间复杂度存在最好,平均和最坏情况实例例1例2例3例4例5例6例7例8空间复杂度==注意==:实例例1例2例3例4常见原创 2021-10-13 08:15:50 · 5233 阅读 · 76 评论