《Hello 算法》第二章·算法复杂度
《Hello 算法》第二章 · 算法复杂度当我们提到算法复杂度时,可以把它当作衡量完成一项任务效率的标准。想象你和朋友一起比赛,看谁能更快地完成整理书架的任务。你们有两种不同的做法,最终谁更快完成任务,谁就是胜利者。通过算法复杂度,我们能够评估不同方法在完成任务时的效率,帮助我们在各种情况下选择最佳的方案。 时间复杂度:任务做得有多快?时间复杂度就像是完成任务所需要的时间。假设你有100本书要整理,每次拿一本书,你都需要检查它放对了没,直到所有书都摆放好了。那么,整理书架的时间就跟书的数量成正比。 在计算机科学中,算法的时间复杂度通过大O符号表示,用来描述算法的运行时间随输入值大小的变化趋势。它通常忽略低阶项和系数,只关注输入规模趋近无穷时的表现。时间复杂度常用来衡量算法在最坏情况下的执行时间,也可用来分析平均情况。通过估算算法操作单元的数量来计算时间复杂度,常见的分类包括线性时间算法(O(n))和指数时间算法(O(Mn))。(总结自Wikipedia) 常见的时间复杂度 O(1) — 常数时间复杂度 ...
P1255 数楼梯
P1255 数楼梯题目题目描述楼梯有 N 阶,上楼可以一步上一阶,也可以一步上二阶。编一个程序,计算共有多少种不同的走法。 输入格式一个数字,楼梯数。 输出格式输出走的方式总数。 样例 #1样例输入 #114 样例输出 #115 提示对于 60% 的数据,N≤50;对于 100% 的数据,1≤N≤5000。 问题分析我们可以用递归角度解决: 当青蛙跳到第 n 级楼梯,可以选择: 从第 n-1 级跳到第 n 级(跳 1 级)。 从第 n-2 级跳到第 n 级(跳 2 级)。 递归关系: f(n)=f(n−1)+f(n−2) 其中,f(n) 代表跳到第 n 级楼梯的方法总数。 并且: 如果 n=0,即青蛙在第 0 级楼梯,则 f(0)=0(即什么都不做)。 如果 n=1,即青蛙跳到第 1 级楼梯,那么只能跳 1 级,则 f(1)=1。 问题的递归式: 基于以上推理,我们可以列出以下递归关系式: 解题伪代码:12345678F(n): 如果 n == 0: 返回1 //...
《Hello 算法》第二章·算法复杂度
《Hello 算法》第一章 · 初识算法算法算法定义算法(algorithm)是指在有限时间内通过一组明确的步骤或指令来解决特定问题的过程。它具有以下基本特性: 明确性:问题及其输入输出是清晰定义的,确保在不同的执行环境下可以得到一致的结果。 可行性:算法能够在有限的步骤、时间和内存空间内完成,保证其可以在实际系统中执行。 确定性:每个步骤有清晰的定义,并且在相同的输入和运行条件下,算法的输出始终一致,避免了不确定性和随机性。 最优性:在满足问题要求的前提下,算法能够实现最高效的执行,例如最短的时间复杂度和最少的空间消耗。 实例: 排序算法,如冒泡排序(Bubble Sort)和快速排序(Quick Sort),用于将一组无序数据排列为有序数据。快速排序通常被认为是最优的,因为它的平均时间复杂度是 O(n log n),而冒泡排序的时间复杂度是 O(n²)。 算法复杂度算法复杂度(algorithm...
算法学习专栏总序
...
技研录,开站!
技研录,开站!我创建这个网站的初衷源于对编程、语言学习和历史的浓厚兴趣。作为一名热衷于探索技术与人文领域的学生,我希望在这片数字空间里记录自己的成长与探索,并通过这个平台展示自己的编程项目和学习成果,同时与志同道合的人分享思考与见解。我的网站将展示我在编程、英语学习、日语以及历史研究等方面的积累与思考。从简单的代码到深刻的思辨,每一项成果都是我成长的一部分。希望你能在这里找到与你志同道合的灵感与启发。 人生是一段不断挑战自我、追求卓越的旅程。无论是编程的代码,语言的表达,还是历史的学习,每一步都需要耐心与坚持。通过这个平台,我希望与大家共同进步、互相激励。未来的路上,让我们继续学习、探索、不懈追求,成为更好的自己。 我的未来仍然很长,充满了无限的可能与机会。在这段不断学习与成长的旅程中,我相信每一次努力和突破,都会带来更多选择与机遇。无论是技术创新,还是人生的其他领域,我都愿意保持积极向上的心态,勇敢追逐梦想,迎接新的挑战。未来,我将继续积累经验、拓宽视野,把握每一个机会,成就更好的自己。