摘要: 刚学C++时书上就会写这个qwq属于最简单的排序算法惹。时间复杂度O(n2)。 算法步骤 比较相邻的元素。如果第一个比第二个大,就交换他们两个。 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。这步做完后,最后的元素会是最大的数。 针对所有的元素重复以上的步骤,除了最后一个。 持续每次对 阅读全文
posted @ 2023-12-20 20:09 綾川雪絵 阅读(21) 评论(0) 推荐(0)
摘要: 选择排序(Selection sort)是一种简单直观的排序算法。 1. 基本思想 首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。 选择排序的思想其实和冒泡排序有点类似,都 阅读全文
posted @ 2023-12-20 19:55 綾川雪絵 阅读(35) 评论(0) 推荐(0)
摘要: 引入:P1271 【深基9.例1】选举学生会 在实际中,一般会在投票区放n个投票箱,投完后只需要计数每个投票箱即可。就此可引入计数排序。 本题AC代码(虽然这题直接sort就行了...) #include<iostream> using namespace std; int a[1010]={0}, 阅读全文
posted @ 2023-12-20 19:38 綾川雪絵 阅读(43) 评论(0) 推荐(0)
摘要: 归并排序,它有两大核心操作. 一个是将数组一分为二,一个无序的数组成为两个数组。 另外一个操作就是,合二为一,将两个有序数组合并成为一个有序数组。 时间复杂度情况: 最好和最快情况都是:O(NlogN) 代码模版如下 int arr[N], temp[N]; void merge_sort(int 阅读全文
posted @ 2023-12-20 16:55 綾川雪絵 阅读(17) 评论(0) 推荐(0)
摘要: 快速排序 基本思想 通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。 算法复杂度 最差时间复杂度O(N2)平均时间复杂度O(NlogN) 实现方法 阅读全文
posted @ 2023-12-20 16:35 綾川雪絵 阅读(25) 评论(0) 推荐(0)
摘要: 题目描述在这里:P1678 这道题用二分的思路就很容易想出,先把学校分数排好序,根据不满意度的定义,我们只需要每次找到第一个大于学生成绩的学校分数,然后再和最后一个小于学生分数的院校分数分别与学生成绩做差再打绝对值进行比较,取最小的一个累加到ans里就好啦 代码如下 #include<iostrea 阅读全文
posted @ 2023-12-20 11:23 綾川雪絵 阅读(250) 评论(0) 推荐(0)
摘要: 题目描述见此:P1024 如何求一个方程的根呢qwq 首先,根是什么,函数y=f(x)有零点 ⇔ 方程f(x)=0有实数根 ⇔ 函数y=f(x)的图象与x轴有交点。回顾我们高一学过的一个定理: 零点存在性定理: 如果函数y=f(x)在区间[a, b]上的图象是连续不断的一条曲线,并且有f(a)·f( 阅读全文
posted @ 2023-12-20 10:47 綾川雪絵 阅读(63) 评论(0) 推荐(0)
摘要: 题目描述见:P1873 思路比较明确qwq因为答案显然满足单调性:当x超过某个数一定是错的(收集的木材大于m),而小于x一定是对的,并且x是从0一直递增。故我们只需二分法找到x。 直接看代码吧qwq精髓是check函数直接模拟题目要求ww #include <iostream> using name 阅读全文
posted @ 2023-12-20 09:17 綾川雪絵 阅读(177) 评论(0) 推荐(0)
摘要: 题目描述见:P1102 qwq大致思路是将A-B=C变成A=B+C,其中C是确定的,并且题目说重复的也算ww(如果需要不重复的话开两个数组,给其中一个数组去重就行了qwq)那么在数组有序的情况下只需要枚举数组中的每一个数,然后用二分来找存在几个B+C,因为数组有序所以B+C一定是连续的,故寻找第一个 阅读全文
posted @ 2023-12-20 08:44 綾川雪絵 阅读(78) 评论(0) 推荐(0)