同一个问题可以用不同的算法实现,而算法是有优劣之分的。我们经常需要对算法进行分析,以便于选择合适的算法和改进算法。 通常我们从两个维度来描述算法的优劣:程序代码的执行时间和代码占用的内存空间。两者分别叫做算法的时间复杂度…
分类:空间复杂度
BFS和DFS算法分析对比及优化
NOI2001-聪明的打字员 阿兰是某机密部门的打字员,她现在接到一个任务:需要在一天之内输入几百个长度固定为6的密码。当然,她希望输入的过程中敲击键盘的总次数越少越好。不幸的是,出于保密的需要,该部门用于输入密码的…
常用的排序算法的时间复杂度和空间复杂度
常用的排序算法的时间复杂度和空间复杂度 原文:http://www.cnitblog.com/houcy/archive/2009/07/24/60349.html 考点:各排序算法时间复杂度比较出现频率:…
空间复杂度是什么?What does ‘Space Complexity’ mean? ------geeksforgeeks 翻译
这一章比较短! 空间复杂度(space complexity)和辅助空间(auxiliary space)经常混用,下面是正确的辅助空间和空间复杂度的定义 辅助空间:算法需要用到的额外或者暂时的存储空间。 …
数据结构中常用的排序算法 && 时间复杂度 && 空间复杂度
第一部分:数据结构中常用的排序算法 数据结构中的排序算法一般包括冒泡排序、选择排序、插入排序、归并排序和 快速排序, 当然还有很多其他的排序方式,这里主要介绍这五种排序方式。 排序是数据结构中的主要内容, 并不限…
最长公共子序列LCS
最长公共子序列,典型的动态规划,时间复杂度O(mn),空间复杂度O(mn), 如果只要长度,不要序列,优化时间复杂度O(mn),空间复杂度用两行min(O(m),O(n)) 代码如下: 1 #include <io…
计数排序:时间复杂度O(n+k),空间复杂度O(k)
问题描述 假设n个记录中每个关键字都介于0到k-1之间,修改计数排序算法,使得算法满足: 时间复杂度:O(n+k),空间复杂度:n+O(k) 问题分析 原计数排序算法中,需借助另一个大小为n的数组进行排序,不能做到原地排…
【算法基础笔记】常用的排序算法的时间、空间复杂度,部分排序算法原理
冒泡排序 比较相邻的元素。如果第一个比第二个大,就交换他们两个。 对每一对相邻元素做同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。 针对所有的元素重复以上的步骤,除了最后一…
PHP 中巧用数组降低程序的时间复杂度
关于作者 王丹丹 , IBM 中国系统与技术中心软件工程师,自从 2006 年加入 IBM,一直从事 Web 系统设计和开发工作,有五年 PHP 应用程序设计开发经验。 原文: http://www.ibm.com/de…
O(1)复杂度增加和删除和随机取
题目: https://leetcode.com/problems/insert-delete-getrandom-o1-duplicates-allowed 非常好的解法: https://discuss…
简单选择排序
简单选择排序(Simple Selection Sort)就是通过n-i次关键字间的比较,从n-i+1个记录中选出关键字最小的记录,并和第i(1≤i≤n)个记录交换之。 核心代码 1 void Select…
关于算法复杂度
一、算法复杂度 算法复杂度,即算法在编写成可执行程序后,运行时所需要的资源,资源包括时间资源和内存资源。 同一问题可用不同算法解决,而一个算法的质量优劣将影响到算法乃至程序的效率。算法分析的目的在于选择合适算…