C++算法
文章平均质量分 80
R_mine
看到我的人,希望你每天开心^-^
展开
-
C++算法之计数排序
C++算法之计数排序文章目录C++算法之计数排序一、算法描述二、代码实现三、复杂度分析一、算法描述给定长度为n的序列,假设已知序列元素的范围都是[0..K]中的整数,并且K的范围比较小(例如10^6,开长度为10^6左右的int类型数组所占用的内存空间只有不到4M)。解决该问题的计数排序算法描述如下:使用整数数组cnt统计[1..K]范围内所有数字在序列中出现的个数。使用变量i枚举1到K,如果i出现了cnt[i]次,那么在答案序列的末尾添加cnt[i]个i。下图是一个n=6, K=3的例原创 2022-04-29 16:45:59 · 3666 阅读 · 0 评论 -
C++算法之归并排序
C++算法之归并排序文章目录C++算法之归并排序一、归并排序思想二、排序步骤三、代码实现四、复杂度分析一、归并排序思想回顾快速排序的基本思想:找出一个分界线,并以该分界线为界将数组分为两部分,再对这两部分以同样的方式分别排序。但是!快速排序作为一种高效率的算法,它的缺点在于算法的复杂度很依赖分界线的选取。因为这决定了左右两边划分的元素个数是否平衡。那么,我们能不能变通一下,规避这种情况带来的效率损失呢?回忆快速排序中,正是因为分界线的存在,使得划分到两边的数字排好序后,通过分界线的连接,能够原创 2022-04-24 20:18:47 · 4388 阅读 · 0 评论 -
C++算法之快速排序
C++算法之快速排序文章目录C++算法之快速排序一、快速排序引出二、代码实现三、复杂度分析一、快速排序引出我们知道,给一个长度为n的序列排序,有三种很简单的算法:选择排序、冒泡排序、插入排序。这三种算法的复杂度均为O(n^2)。如果按照计算机1秒钟可以进行10^8次计算作为参照,那么它1秒之内可以排序的序列长度大概为10^4这个数量级。然而,在实际生活中,10^4级别并不是一个很大的数字,比如说山东每年会有超过50万人参加高考。如果我们想将山东省内所有学生按照高考成绩排序的话,使用O(n^2)原创 2022-04-23 12:25:06 · 19916 阅读 · 1 评论 -
C++算法之插入排序
C++算法之插入排序文章目录C++算法之插入排序一、算法描述二、代码实现三、复杂度分析一、算法描述整理插入排序算法描述如下:枚举序列中第2~n个元素。当枚举元素i时,前i-1个元素已经有序。将第i个元素插入到前i-1个元素的有序序列中,形成长度为i的有序序列。枚举过程结束后,整个序列有序。在上述算法描述中,我们有个关键的步骤——插入操作:将第i个元素插入到前i-1个元素的有序序列中,形成长度为i的有序序列。怎样实现这个过程呢?一种实现思路和前面介绍的“火车站插队”过程十分类似。比如原创 2022-04-23 10:54:50 · 5570 阅读 · 0 评论 -
C++算法之冒泡排序
C++算法之冒泡排序文章目录C++算法之冒泡排序一、基本思想二、步骤冒泡排序冒泡过程三、代码四、复杂度分析一、基本思想试想一下,如果在上体育课的时候,通常学生都会随意站成一列,但是体育老师会帮忙调整学生的站位使得最终顺序是按照身高排序的。那么,回忆一下体育老师是如何调整顺序的呢?假设体育老师想将学生从左到右按照身高从矮到高排序。通常情况下,他会从左到右扫视学生的身高。如果左边有一个同学,个子比右边的同学高,他就要将其进行调整。具体调整方法是:如果一个同学比他右边的同学高,就让这两个同学交换位置原创 2022-04-22 09:16:19 · 23207 阅读 · 5 评论 -
C++算法之选择排序
C++算法之选择排序文章目录C++算法之选择排序一、选择排序二、题目1、明明的随机数2、代码总结一、选择排序选择排序(Selection Sort)是我们学习的第一个排序算法。这里,我们尝试按照选择排序的思路,自己将其设计出来。首先,我们来思考一个问题:想把一个完全无序的序列按照从小到大排序,排在第一个的元素应该是谁?这个问题的答案很简单:就是整个序列中的最小值!那么,假如我们把最小的元素选择出来,放在答案序列的第一位。那么,后面要解决的问题,就只需要将剩下的n-1个元素排序放在答案的2~n位原创 2022-04-21 19:29:18 · 2322 阅读 · 0 评论 -
C++算法之排列枚举
C++算法之排列枚举文章目录C++算法之排列枚举一、题目取宝石问题二、代码实现复杂度分析一、题目取宝石问题假设在一个大房间有nn个宝石,每一处宝石用一个坐标(x, y)表示。如果你从任意一处宝石的地方出发,依次经过每个放宝石的地方并取走宝石,最终要求回到出发地点,问最短需要走的距离是多少。在这个情境里,经过不同地点的顺序会改变最终的行走距离。所以,我们要枚举的就是经过1~n一共n个位置的顺序。用next_permutation函数解决“取宝石问题”,因为要用枚举法解决第一个问题,所以,代入到原创 2022-04-20 10:19:56 · 1445 阅读 · 0 评论