前言:贪心算法也是用来解决最优化问题,将一个问题分成子问题,在现在子问题最优解的时,选择当前看起来是最优的解,期望通过所做的局部最优选择来产生一个全局最优解。书中先从活动选择问题来引入贪心算法,分别采用动态规划方法和贪心算法进行分析。本篇笔记给出活动选择问题的详细分析过程,并给出详细的实现代码进行测试验证。关于贪心算法的详细分析过程,下次在讨论。1、活动选择问题描述S= {a1,a2
转载
2023-06-06 11:34:41
176阅读
一、概述1. 算法表述自然语言(ENGLISH)算法描述语言(Pseudo-code)计算机程序语言(C++,Java)硬件设计(DSP)2. 算法一般特性**正确性:**对于符合输入类型的任意输入数据,都产生正确的输出**有效性:**每一步指令能够被有效的执行,并且规定了指令的执行效果,结果应该具有的数据类型,而且是可以预期的**确定性:**每一步之后都要有确定的下一步指令**有穷性:**有限步
转载
2023-07-20 12:45:59
82阅读
QQ 1274510382Wechat JNZ_aming商业联盟 QQ群538250800技术搞事 QQ群599020441解决方案 QQ群152889761加入我们 QQ群649347320共享学习 QQ群674240731纪年科技aming网络安全 ,深度学习,嵌入式,机器强化,生物智能,生命科学。...
原创
2021-07-18 21:57:04
389阅读
想要撸一遍算法导论的想法很早就有的,但是人之懒性无奈之,直到看到一句励志的话,你永远不知道,你以后要有多努力,才能弥补现在的懒惰。我这人很懒,索性现在稍微努力点,也是为了以后可以偷懒。所以now rather thinking than action。共勉之...算法导论day1算法在计算中的作用算法(algorithm)就是任何良定义的计算过程,该过程取某个值或值的集合作为输入并产生某个值或值的
转载
2024-01-31 03:00:15
38阅读
非形式地说,算法就是任何定义的计算过程,该过程取某个值或值的集合作为输入并产生某个值或值的集合作为输出。可以这么理解:算法就是把输入转换成输出的计算步骤的一个序列。为什么要学习算法?长期来看,大脑思考能力是一个人最重要的核心竞争力,而算法是为数不多的能够有效训练大脑思考能力的途径之一。有了这项能力,很多别的程序员解决起来很困难的编程问题在你这里就会迎刃而解。最近很多小伙伴问我要一些 算法 相关的资
原创
2020-12-10 12:19:59
2343阅读
1、bellman-ford算法 每条边松弛|V|-1次。 运行结果如下:(实现的例子) 1 #include<stdio.h>
2 #include<stdlib.h>
3 #define maxnum 100
4 #define maxint 99999
5
6 // 边,
7 typedef struct Edge{
8
转载
2023-12-20 13:55:33
32阅读
了。时间复杂度由小到大:O(1)<=O(log2 n)<=O(n)<=O(nlog2 n)<=O(n^2)<=O(n^3)<=.........<=O(n^k)<=O(2^n)。伪代码就是采用最具表达力、
原创
2021-08-05 16:45:04
241阅读
关注“Java后端技术全栈”回复“面试”获取全套面试资料非形式地说,算法就是任何定义的计算过程,该
原创
2023-04-25 21:00:34
115阅读
第一部分 基础知识第1章 算法在计算中的作用第2章 算法基础第3章 函数的增长第4章 分治策略第5章 概率分析和随机算法第二部分 排序和顺序统计量第6章 堆排序第7章 快速排序第8章 线性时间排序第9章 中位数和顺序统计量第三部分 数据结构第10章 基本数据结构第11章 散列表第12章 二叉搜索树第13章 红黑树第14章 数据结构的扩张第四部分 高级设计和分析技术第15章 动态规划第16章 贪心算
1. 写在前面本篇博文是学习算法导论的第一次记录,主要想介绍如何去证明算法的正确性;如何去评判一种算法的好坏;以及如何去改进算法。2. 从插入排序说起插入排序(insert-sort)是一种十分常见的算法,我们在生活中可能就经常在使用——玩扑克。考虑我们抓牌时的场景。首先,你的右手(不考虑左撇子)会不断从桌上拿起一张扑克,然后从左往右(或从右往左)依次观察左手扑克序列中各个牌面的大小,直到找到一个
一部分摘抄网上,一部分个人所写,如有不对,劳烦指正,持续更新
15.1-1Show that equation (15.4) follows from equation (15.3) and the initial condition T(0) = 1.\[\begin{aligned}
T(n) & = 1 + T(1) + T(2) + .
转载
2023-06-21 21:45:56
102阅读
#### $\color{red}{不正确的算法如果其错误
原创
2023-05-28 00:23:48
97阅读
文章目录排序算法说明排序的定义术语说明算法总结上图名词解释比较和非比较的区别比较排序非比较排序十大排序算法冒泡排序(Bubble Sort)选择排序(Selection Sort)插入排序(Insertion Sort)希尔排序(Shell Sort)归并排序(Merge Sort)快速排序(Quick Sort)堆排序(Heap Sort)计数排序(Counting Sort)桶排序(Buck
转载
2023-09-19 09:43:32
31阅读
对于学计算机的,特别是搞开发的人来说,算法是一个很体到读书的顺序。亲测有效!算法基础部分包括:算法在计算中的应用算法基础函数增
转载
2023-05-18 14:23:08
68阅读
贪心的基本步骤: 1)决定问题的最优子结构; 2)设计出一个递归解; 3)证明在递归的任一阶段,最优选择之一总是贪心选择。那么,做贪心选择总是安全的; 4)证明通过做贪心选择,只有一个子问题; 5)设计出一个实现贪心策略的递归算法; 6)将递归算法转换成迭代算法。 更一般的,可以用下面的方式来描述: 1)将优化问题转化成先做出选择,再解决剩下的一个子问题; 2)证明原问题
原创
2012-12-03 19:32:00
486阅读
一、算法描述 快速排序是基于分治法的排序算法的一种。 三个步骤: 分解:数组A[p..r]被划分成两个子数组A[p..q-1]和A[q+1..r],使得A[p..q-1]中的每个元素都小于A[q],而且,小于等于A[q+1..r].下标q也在这个划分过程中进行计算。 解决:通过递归调用快速排序,对子数组A[p..q-1]和A[q+1..r]排序。 合并:递
原创
2012-10-11 21:18:00
764阅读
http://edu.51cto.com/course/course_id-1692-page-1.html
转载
精选
2014-08-07 15:25:34
697阅读
在计算机科学中,特别是算法分析中,平摊分析寻找在最坏情况下的操作序列中每操作的平均耗费时间。平摊分析只保证最坏情况性能的每操作耗费时间,不涉及平均情况性能。这个方法需要知道操作序列中可能发生的每个操作。通常应用在操作间存在状态的数据结构中。基本思想是一个最坏情况操作会改变状态从而不会在一段时间内再次出现,因此"平摊"它的耗费。一个简单的例子,在某个特定实现的动态数组中,我们在每次数组溢出时增长数组的长度至原来的两倍。因此需要数组空间分配,在最坏情况下一个插入操作需要O(n)的时间。但是,一个n个插入的操作序列仍然可以在 O(n) 的时间内完成,因为剩下的插入可以在常数时间内
转载
2013-08-27 02:12:00
405阅读
2评论