
算法
文章平均质量分 84
与算法相关题目
青瓦梦滋
和你们一样热爱计算机
展开
-
【算法】双指针8道速通(C++)
本文介绍力扣中的8道经典双指针算法题,帮助各位快速入门双指针原创 2025-04-22 22:47:02 · 1214 阅读 · 0 评论 -
【基础算法】计数排序(C语言)
cnt[0]的值是1,就代表0有1个,就先往原数组中写一个0,1有1个,就再往原数组中写一个1,以此类推,覆盖完成后就是排好序的数组了。再遍历原数组,比如上图数组,第一个数组是4,就往新开辟的数组中的cnt[4]++,接下来是5,就cnt[5]++,直到遍历结束。此时我们可以只开辟到4000的下标,那1000就要存到0的位置,因为1000是数组中的最小值,所以可以由它来充当0。排序分为比较排序和非比较排序,比较排序有希尔排序,快速排序,冒泡排序,插入排序,堆排序等等,而。,这里就讲解一下计数排序。原创 2025-01-21 13:47:46 · 239 阅读 · 0 评论 -
【基础算法】归并排序(C语言)
归并排序是利用分治法进行排序,简单来说是把两个有序数组拼合成一个有序数组(此文默认按升序)我们现在有两个有序数组,要怎么将它合并成一个呢?让begin1和begin2比较,较小的那个移动到创建的新数组中,可以看到现在begin1所指向的值更小,所以将1移到下面数组中,并将现在begin2更小,所以将2移到下面的数组中,并将接下来也一样,直到数据排完为止当其中的一个数组排完后,就可以将另一个数组中剩下的值都移到新数组中现在左边的数组已经排完了,就可以将右边数组的数据都移到新数组中。原创 2025-01-19 11:36:00 · 928 阅读 · 0 评论 -
【基础算法】快速排序(C语言)
快速排序的实现原理与二叉树的前序遍历相似分治递归所以建议读者先学完二叉树的遍历再来学快速排序会简单许多。先来将快速排序的单趟排序,它的核心思想是在数组中找一个基准值(key),比基准值小的就放在左边,比基准值大的就放在右边。基准值的取值一般是第一个或者最后一个(不过这种取值方式有缺陷,后面会介绍优化方法)快速排序的单趟排序有,接下来为大家一一讲解(此文默认为排升序)原创 2025-01-16 13:59:16 · 1177 阅读 · 0 评论 -
【基础算法】希尔排序(C语言)
希尔排序本身是直接插入排序的优化版,所以接下来先简单复习一下直接插入排序。原创 2025-01-07 11:36:16 · 901 阅读 · 0 评论 -
【基础算法】堆排序与TopK问题(C语言)
堆(Heap)是一类特殊的数据结构,是最高效的优先级队列。堆通常是一个可以被看作一棵完全二叉树的数组对象。堆分大堆和小堆,大堆的每个父亲都比孩子要大,小堆的每个父亲都比孩子要小。建议大家了解二叉树后再来学习堆排序。原创 2024-11-26 22:30:43 · 1151 阅读 · 0 评论 -
【基础算法】二维差分(C语言)
在学习二维差分之前,我们先复习一下一维差分给定一个数组要对这个数组差分,也就是对这个数组的l到r个元素同时操作(加减),比如对这个数组的下标1到3的元素都进行+2操作但这种操作太过于繁琐,于是可以用到一维前缀和先创建一个比原数组大一个的标记数组在当前位置起始位置+2,并在末尾位置的下一个-2再把求出标记数组的前缀和,就变成了此时sumarr+arr的值就是差分后的结果了。原创 2024-11-20 22:10:07 · 1160 阅读 · 0 评论 -
【基础算法】二维前缀和(C语言)
在学习二维前缀和之前,我们先来复习一下一维前缀和:给定一个数组要求这个数组的前缀和,需要再创建一个数组sum[5]={0};当i=0时否则这样arr的前缀和数组sum就求出来了,如果现在想要知道arr[i]到arr[j]的和,就可以用公式。原创 2024-11-16 08:00:00 · 1475 阅读 · 0 评论