![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构预算法
文章平均质量分 59
神厨小福贵!
C/C++/Linux
展开
-
堆排序(超详细的原理图以及代码注释)
在了解学习堆排序之前,我们必须清楚以下的概念:上述概念搞清楚之后,来看下面的原理图:然后原理部分就讲完了下面来看如何由子节点下标推出父节点和父节点下标推出子节点下标下面这个原理图来展现一下为什么在调整大顶堆的时候 要将下标给到len-1最大值所有的前期任务完成了之后,下面进行代码实现://该函数是用来调整大顶堆的void AdjustHeap(int* arr, int start, int end){ int tmp = arr[start]; int i..原创 2022-03-25 18:43:22 · 688 阅读 · 0 评论 -
基数排序(桶排序)
基数排序又叫桶排序:先按照个位数排序,第一次排序好之后;再次按照十位数进行排序,第二次排序好之后;第三次对百位进行排序..................实现原理图:拿出一些个类似“桶”的东西 将分别按照个位,十位,百位排序好的放到这些“桶”中,然后按照从小到大,从上到下的规则开始取值排序的次数是该数组中位数最多的元素来决定的 例如下图中排序三次,最高位数是百 相同道理,如果位数最多元素是千的话,那就得排序四次!如上所示,排序三次之后就完成了该数组的排序!每个桶大家...原创 2022-03-23 16:45:16 · 260 阅读 · 0 评论 -
基础数据结构测试
今天晚上考了基础数据结构,把题拿出来跟大家分享一下,希望对大家有一定的帮助!!!时间复杂度,即执行了多少次,i是从1到n,j是从n到0,又因为这个是for循环的嵌套,所以正确答案D.O(n^2)首先来看A 线性表即顺序表和链表 正确B 顺序表必须占用一块连续的内存 无论是逻辑上还是物理上都是连续的 正确C 链表没有明确的规定 所占内存可连续 可不连续 都可以的 错误D 链表的实现方式 正确A.单链表要实现尾删尾插的话,得从头开始遍历,那么时间复杂度就是O(n)B.单循环链表原创 2021-11-20 14:14:58 · 591 阅读 · 0 评论 -
快速排序(快排)--->注释超详细
超详细的代码注释与快速排序的原理与已测试好的源码祝您快速的掌握快速排序原创 2021-11-17 21:47:34 · 512 阅读 · 0 评论 -
归并排序(代码注释超详细)
归并排序: (复制粘贴百度百科没什么意思),简单来说,就是对数组进行分组,然后分组进行排序,排序完最后再整合起来排序!我看了很多博客,都是写的8个数据呀什么的(2^4,分组方便),我就想着,要是10个数据呢,他们那种就没怎么讲清楚,下面我来讲一下我所理解的归并排序!思路整理如下所示:下面用代码来实现(代码注释超详细):用来判断整合几次的最外层循环!void MergeSort(int *arr, int len) //这块用了函数调用 当然...原创 2021-11-12 18:37:51 · 811 阅读 · 0 评论 -
直接插入排序与希尔排序
直接插入排序(Straight Insertion Sort):一种最简单的排序方法,其基本操作是将一条记录插入到已排好的有序表中,从而得到一个新的、记录数量增1的有序表。原理图如下所示:图片取自:1.3 插入排序 | 菜鸟教程如上图所示,默认的就是第一位是已经排序好的,然后对第二位和第一位进行比较,如果第二位大于第一位,第二位不动,然后现在已排序的序列就由一个变为了两个了,再由第三位和第二位进行比较,如果第三位大于第二位,则不动,如果第三位小于第二位,第三位和第二位位...原创 2021-11-10 21:54:20 · 2635 阅读 · 1 评论 -
冒泡排序和选择排序
八大排序中比较简单的两个---->选择排序和冒泡排序冒泡排序:这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端(或者越大的元素会沉到底部,这取舍于你的数组的降序还是升序),所以叫冒泡排序!具体原理图如下所示:下图摘自:百度安全验证void BubbleSort(int* ar, int len) //ar是指针是数组的指针{ assert(ar != NULL); for (int i = 0; i < len; i++) ...原创 2021-11-04 23:15:08 · 108 阅读 · 1 评论