-
第二章
想找第k小的数,可以用快速选择算法。先从数组里随便挑一个数当基准值pivot,然后调整数组,让比它小的都跑到左边,比它大的都跑到右边。具体做的时候,可以用两个指针从数组两头往中间扫,遇到不合适的就交换,直到这一轮划分完成。这时候pivot会落在数组里的某个确定位置p,如果这个位置p刚好就是第k小,那 -
算法第一章作业
本学期主要编码规范 编码规范的核心目标是提升代码可读性与团队协作效率。研究表明,在高度协作的团队环境中,统一的命名和格式标准能让成员快速理解彼此的代码,减少沟通成本。规范不是束缚效率的条条框框,而是团队协作的“通用语言”,是降低技术债务的核心保障。以下从五个维度说明本学期我遵循的主要编码规范。 一、 -
算法第二章实践作业
找第 k 小数的分治算法描述 该算法通常基于快速排序中的 Partition 划分思想,也叫“快速选择”或 QuickSelect。设数组为 A[p..r],要找其中第 k 小的数,k 从 1 开始计数。 自然语言描述: 若当前区间 A[p..r] 只有一个元素,则该元素就是答案。 从区间中选一个枢 -
第二章作业
一、算法描述 找第 k 小的数,经典分治实现是快速选择算法。它借用快速排序的划分思想,每次只递归包含目标的那一半。 具体过程: 从当前数组中随机选取一个元素作为基准值 pivot。 遍历数组进行划分。小于 pivot 的元素放左侧,大于 pivot 的放右侧,等于 pivot 的集中在中间。统计小于 -
算法第二章实践作业
寻找第k小的数 解答代码: `#include using namespace std; //划分 int partition(int a[], int left, int right) { int pivot = a[left]; while (left < right) { while (lef -
c++编码规范
C++ 编码规范 一、命名规范 命名是代码可读性的第一道门槛。统一的命名风格能让团队成员在阅读代码时迅速判断标识符的类型与作用域,减少认知负担。 · 类名采用大驼峰命名法,首字母大写,以区别于变量。 · 函数名同样使用大驼峰,动词开头体现行为语义。 · 普通变量名使用小写加下划线,简洁明了。 · 成 -
第二章时间作业
一、分治算法 以快速排序为例: 1.在数组里随便选一个数当做基准值pivot 2.划分:把数组分成两部分,左边所有数字<=pivot,右边所有数字>=pivot。划分完成后,pivot就处在它在有序数组里的正确位置,假设它的下标是pos 3.分情况判断: 如果pos==k-1 数组下标从0开始 pi -
算法第二章实践作业
1.请用自然语言或伪代码描述找第k小的数的分治算法 2.分析该算法的最好时间复杂度和最坏时间复杂度 3.结合本章的学习,谈谈你对分治法的体会和思考 -
我的C++代码规范
C++编程规范 一、前言 C++是计算机专业常用的编程语言,在程序设计、数据结构和算法课程中都有广泛应用。编写程序不仅要保证结果正确,还需要注意代码的可读性、运行效率和可维护性。 结合大二算法课程的学习内容,以及企业软件开发中的基本要求,制定以下C++编程规范,帮助养成良好的编程习惯。 二、命名规范 -
第二章作业
找第k小的数(分治算法描述) (1)在当前数组区间里选取一个基准元素 pivot ; (2) 划分(partition):将区间内元素重新排列,小于等于pivot的放到pivot左边,大于pivot的放到右边。划分完成后,pivot落在它最终正确的位置pos上; (3)判断: 如果 pos == k -
算法第二章实践作业
1.用自然语言或伪代码描述找第k小的数的分治算法 答:从给定的一组数字中随机找一个数作为基准,把比这个数小的数字放在这个数左侧,比这个数大的数字放在这个数的右侧。假设排好后左边有n个数字,那么当前基准数就是数组中第n+1小的数。比较n+1与k,若n+1=k,那么直接返回n+1,如果n+1<k,从当前 -
算法第二章实践作业
1.分治法找第k小的数 自然语言描述: 在当前数组区间中选一个枢轴元素 pivot。 将区间划分为三部分: L:所有小于 pivot 的元素; E:所有等于 pivot 的元素; R:所有大于 pivot 的元素。 设 |L| 表示 L 中元素个数,|E| 表示 E 中元素个数。 判断第 k 小在哪 -
第二章作业
一、用伪代码描述找第 k 小的数的分治算法 找第 k 小的数,基本思路其实是从快速排序那里"偷"来的:快排每次选一个基准元素 pivot,把数组分成两半,左边都比 pivot 小,右边都比 pivot 大。那我们划分完之后看一眼 pivot 排在了第几位(记为 p,从 1 开始数): 如果 p 正好 -
第二章作业
自然语言描述: 在数组 A[l..r]中找第 k 小的数: 若区间只有一个元素,直接返回它。 选择一个枢轴元素 pivot。 将区间划分为三部分:小于 pivot、等于 pivot、大于 pivot。 设小于 pivot 的元素个数为 less,等于 pivot 的个数为 equal。 若 k≤le -
第二章作业|第K小数
1.第K小数算法描述 找到第K小的数最直接的方法就是直接排好序去找,用上最快的排序方法时间复杂度位O(nlogn) 我们发现可以利用快速排序的思路,因为我们不需要全部排好序,只需要让下标为k-1的那个位置上的数是正确的,它左边所有数都≤它,右边所有数都≥它,最后返回它。快速排序就是先排好一个数的位置 -
算法第二章实践作业
(1)分治法:找第 k 小的数 自然语言描述: 1.选取一个基准元素pivot,调用划分函数把数组分为两部分:左区间全部≤pivot,右区间全部≥pivot,得到基准所在下标。 2.统计左区间元素数量cnt: ·如果cnt == k,基准就是第 k 小元素,直接返回; ·如果k < cnt,说明第 -
第二章找第k小分治法作业
分治法求无序数组中的第 k 小元素 一、问题描述 给定一个无序整数数组 a 和一个整数 k,要求找出数组中按从小到大排序后的第 k 个元素。 例如,数组为: text 7 2 9 4 1 6 将它升序排列后是: text 1 2 4 6 7 9 因此,第 3 小的元素是 4。 最直接的方法是先对数组 -
第二章实践作业
一、分治算法(快速选择) 选基准pivot划分数组,小于等于pivot放左边,大于放右边。判断基准在当前区间的位次: 1.位次=k:直接返回pivot; 2.位次>k:递归左区间找第k小; 3.位次<k:递归右区间,找第(k - 位次)小。 二、时间复杂度 最好:O(n),每次划分均匀,总工作量是n -
算法第二章实践作业
找第 k 小数分治算法 采用快速选择思路。选取数组一个基准值,将数组划分,左侧元素小于等于基准,右侧大于基准。得到基准在当前区间的次序。若次序等于 k,基准就是答案;若 k 更小,递归在左区间查找;k 更大则在右区间查找,减去左侧元素个数。 复杂度 最好时间复杂度 O (n),每次划分均匀,每次只处 -
20242411 2026-2027-1 《网络与系统攻防技术》实验二实验报告
20242411 2026-2027-1 《网络与系统攻防技术》实验二实验报告一、基础知识1.1 后门与反向连接后门是绕过正常认证或交互流程、为后续访问提供隐蔽通道的程序或机制。后门可能通过恶意软件、钓鱼、被篡改的软件包、弱口令服务或漏洞利用进入系统。反向连接模式由目标主机主动连接控制端,通常可以减