- 博客(10)
- 收藏
- 关注
原创 排序--冒泡排序
最佳的情况是序列已经是有序的,冒泡排序只需要遍历一次就能结束,时间复杂度为O(n)。冒泡排序(Bubble Sort)是一种简单的排序算法,它通过多次遍历待排序的序列,每次比较相邻的元素,如果它们的顺序错误,就交换它们的位置。可以看出在冒泡排序算法中,对于相同数值的元素我们并没有进行比较和交换位置,所以相同数值元素的相对位置不会发生改变,因此冒泡排序算法是稳定的排序算法。:每一轮遍历会将当前未排序部分中最大的元素"冒泡"到序列的末尾,下一轮只需要排序剩余的部分。:从序列的开始位置,依次比较相邻的两个元素。
2024-11-06 21:45:59
245
原创 算法:差分
差分输入一个长度为 n 的整数序列。接下来输入 m 个操作,每个操作包含三个整数 l,r,c,表示将序列中 [l,r] 之间的每个数加上 c。请你输出进行完所有操作后的序列。输入格式第一行包含两个整数 n 和 m。第二行包含 n 个整数,表示整数序列。接下来 m 行,每行包含三个整数 l,r,c,表示一个操作。输出格式共一行,包含 n 个整数,表示最终序列。数据范围1≤n,m≤100000,1≤l≤r≤n,−1000≤c≤1000,−1000≤整数序列中元素的值≤1000输入样
2022-03-17 21:41:12
158
原创 算法:前缀和
前缀和输入一个长度为 n 的整数序列。接下来再输入 m 个询问,每个询问输入一对 l,r。对于每个询问,输出原序列中从第 l 个数到第 r 个数的和。输入格式第一行包含两个整数 n 和 m。第二行包含 n 个整数,表示整数数列。接下来 m 行,每行包含两个整数 l 和 r,表示一个询问的区间范围。输出格式共 m 行,每行输出一个询问的结果。数据范围1≤l≤r≤n,1≤n,m≤100000,−1000≤数列中元素的值≤1000输入样例:5 32 1 3 6 41 21 3
2022-03-17 11:16:10
107
原创 算法:二分查找
数的范围给定一个按照升序排列的长度为 n 的整数数组,以及 q 个查询。对于每个查询,返回一个元素 k 的起始位置和终止位置(位置从 0 开始计数)。如果数组中不存在该元素,则返回 -1 -1。输入格式第一行包含整数 n 和 q,表示数组长度和询问个数。第二行包含 n 个整数(均在 1∼10000 范围内),表示完整数组。接下来 q 行,每行包含一个整数 k,表示一个询问元素。输出格式共 q 行,每行包含两个整数,表示所求元素的起始位置和终止位置。如果数组中不存在该元素,则返回 -1 -
2022-03-16 21:11:21
164
原创 算法:分治
算法描述分治 ( Divide and Conquer ) ,字面上的解释是“分而治之”,就是把一个复杂的问题划分成多个相同或者相似的子问题,直到子问题可以简单的直接求解,然后将子问题的解进行合并从而得出原问题的解。在计算机科学中,分治法就是运用分治思想的一种很重要的算法。分治法是很多高效算法的基础,如排序算法(快速排序,归并排序),傅里叶变换等等。其大概流程其实就是分为三步:分解 -> 解决 -> 合并。分解原问题分解到可以求解的边界之后,进行递归求解 ( 分治算法很大程度上是基于递
2021-10-16 19:59:55
118
原创 线段树入门题目: I Hate It
主要考察点:单点替换,区间求最值 I Hate It很多学校流行一种比较的习惯。老师们很喜欢询问,从某某到某某当中,分数最高的是多少。这让很多学生很反感。不管你喜不喜欢,现在需要你做的是,就是按照老师的要求,写一个程序,模拟老师的询问。当然,老师有时候需要更新某位同学的成绩。Input本题目包含多组测试,请处理到文件结束。在每个测试的第一行,有两个正整数 N 和 M ( 0<N<=200000,0<M<5000 ),分别代表学生的数目和操作的数目。学生ID编号分别从1
2021-08-02 19:09:44
103
转载 c++复习提纲
1.叙述面向对象编程的特点是什么?(提示:封装、继承、多态。)对比面向过程具有抽象、封装、继承和多态的特点。封装是将抽象得到的数据和行为相结合,形成了一个有机整体,使得一部分成员充当类与外部的接口,而将其他成员隐藏了起来达到了对成员访问权限的合理控制,使得不同类之间的影响最小,加强数据安全,简化编程。继承允许在保持原有类特性的基础上,进行更具体、更详细的说明,能够很好反映出特殊概念和一般概念之间的关系,是代码复用的基础机制。多态使得一段程序能够具有处理多种类型对象的能力,相同的消息在不同的对象下会有
2021-07-04 17:58:03
448
原创 素数打表法
普通筛选法–埃拉托斯特尼筛法关于埃拉托斯特尼筛法,维基百科上的GIF讲解和伪代码都特别清楚。所用的原理大概是所使用的原理是从2开始,将每个素数的各个倍数,标记成合数。一个素数的各个倍数,是一个差为此素数本身的等差数列。此为这个筛法和试除法不同的关键之处,后者是以素数来测试每个待测数能否被整除。实现方法:建立一个bool类型的数组check,一个int类型的数组prime储存素数,先假设所有的数都是素数(初始化为0),从第一个素数2开始,把2的倍数都标记为非素数(check置为1),一直到大于N;然后进
2020-04-03 18:21:39
114
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人