
数据结构与算法
wenkun97
这个作者很懒,什么都没留下…
展开
-
常见排序算法C++实现
快速排序:void recursive(vector<int>& vec,int start,int end) { if(start>=end) { return ; } int split_num = vec[start]; int pos = start+1; int i=end; int temp;...原创 2020-03-20 15:10:26 · 156 阅读 · 0 评论 -
求解分治算法的递推关系
相关概念分治递推关系:如果f(n)f(n)表示求解规模为nn的问题所需的云算数,则ff满足递推关系f(n)=af(n/b)+g(n)f(n)=af(n/b)+g(n)相关定理【定理1】设ff是满足递推关系f(n)=af(n/b)+cf(n)=af(n/b)+c的增函数,其中nn被bb整除,b≥1,bb≥1,b是大于1的正整数,cc是一个正实数。那么f(n)={O(nlogab)a...转载 2019-12-15 12:46:51 · 1344 阅读 · 0 评论 -
高级算法课后题——能否成环
参考链接:[算法]能否成环能否成环DescriptionGiven an array of strings A[ ], determine if the strings can be chained together to form a circle. A string X can be chained together with another string Y if the last ...原创 2019-12-04 21:48:45 · 297 阅读 · 0 评论 -
01背包问题,高级算法课后题——是否能通过考试
是否能通过考试Description小张想要通过明天的考试。他知道考题的分值分布,也知道考试中要拿到每一个题目需要耗费的时间。假设考试时长为h,共n个题目,需要拿到p分才能通过考试。现在已知每个考题的得分与耗时,请你判断小张能否通过合理安排时间,而通过考试,并给出通过考试的最短时间。Input输入第一行为测试用例个数.每一个用例有若干行,第一行为任务数量n、考试时常h、通过分数p,下面的n...原创 2019-12-04 20:12:44 · 237 阅读 · 0 评论 -
子数组的取值范围
Description给定数组arr和整数num,求arr的连续子数组中满足:其最大值减去最小值的结果大于num的个数。请实现一个时间复杂度为O(length(arr))的算法。Input输入第一行为测试用例个数。每一个用例有若干行,第一行为数组,每一个数用空格隔开,第二行为num。Output输出一个值。Sample Input 113 6 4 3 22Sample Outp...原创 2019-10-17 15:44:54 · 364 阅读 · 0 评论 -
Dijkstra最短路径算法
Dijkstra最短路径算法求单源到其他所有节点的最短路径,时间复杂度o( n^2 )算法特点:每次找出前一次迭代后具有最低费用的节点,添加到集合中;第k次迭代后,可以知道到k个目的节点的最低费用路径;伪代码:Initialize:N'={u}for all nodes v if v is a neighbor of u then D(v) =C(u,v) ...原创 2018-10-20 20:03:02 · 3717 阅读 · 0 评论 -
堆排序算法
堆排序算法算法特点:利用完全二叉树的双亲结点与孩子结点的大小关系,每次输出堆顶元素,实现排序。时间复杂度o(nlogn)是一个不稳定的排序算法。算法步骤:步骤1 构建堆:即根据元素初始顺序建立一个完全二叉树示例:步骤2 调整堆:从第N/2个结点到堆顶结点,若子节点大于该结点值,则与子节点交换,并继续向下调整,时间复杂度o(n)步骤3 进行堆排序:每次输出堆顶元素(可以将堆顶...原创 2018-10-24 16:37:02 · 169 阅读 · 0 评论