- 浏览: 3558250 次
- 性别:
- 来自: 杭州
文章分类
- 全部博客 (1491)
- Hibernate (28)
- spring (37)
- struts2 (19)
- jsp (12)
- servlet (2)
- mysql (24)
- tomcat (3)
- weblogic (1)
- ajax (36)
- jquery (47)
- html (43)
- JS (32)
- ibatis (0)
- DWR (3)
- EXTJS (43)
- Linux (15)
- Maven (3)
- python (8)
- 其他 (8)
- JAVASE (6)
- java javase string (0)
- JAVA 语法 (3)
- juddiv3 (15)
- Mule (1)
- jquery easyui (2)
- mule esb (1)
- java (644)
- log4j (4)
- weka (12)
- android (257)
- web services (4)
- PHP (1)
- 算法 (18)
- 数据结构 算法 (7)
- 数据挖掘 (4)
- 期刊 (6)
- 面试 (5)
- C++ (1)
- 论文 (10)
- 工作 (1)
- 数据结构 (6)
- JAVA配置 (1)
- JAVA垃圾回收 (2)
- SVM (13)
- web st (1)
- jvm (7)
- weka libsvm (1)
- weka屈伟 (1)
- job (2)
- 排序 算法 面试 (3)
- spss (2)
- 搜索引擎 (6)
- java 爬虫 (6)
- 分布式 (1)
- data ming (1)
- eclipse (6)
- 正则表达式 (1)
- 分词器 (2)
- 张孝祥 (1)
- solr (3)
- nutch (1)
- 爬虫 (4)
- lucene (3)
- 狗日的腾讯 (1)
- 我的收藏网址 (13)
- 网络 (1)
- java 数据结构 (22)
- ACM (7)
- jboss (0)
- 大纸 (10)
- maven2 (0)
- elipse (0)
- SVN使用 (2)
- office (1)
- .net (14)
- extjs4 (2)
- zhaopin (0)
- C (2)
- spring mvc (5)
- JPA (9)
- iphone (3)
- css (3)
- 前端框架 (2)
- jui (1)
- dwz (1)
- joomla (1)
- im (1)
- web (2)
- 1 (0)
- 移动UI (1)
- java (1)
- jsoup (1)
- 管理模板 (2)
- javajava (1)
- kali (7)
- 单片机 (1)
- 嵌入式 (1)
- mybatis (2)
- layui (7)
- asp (12)
- asp.net (1)
- sql (1)
- c# (4)
- andorid (1)
- 地价 (1)
- yihuo (1)
- oracle (1)
最新评论
-
endual:
https://blog.csdn.net/chenxbxh2 ...
IE6 bug -
ice86rain:
你好,ES跑起来了吗?我的在tomcat启动时卡在这里Hibe ...
ES架构技术介绍 -
TopLongMan:
...
java public ,protect,friendly,private的方法权限(转) -
贝塔ZQ:
java实现操作word中的表格内容,用插件实现的话,可以试试 ...
java 读取 doc poi读取word中的表格(转) -
ysj570440569:
Maven多模块spring + springMVC + JP ...
Spring+SpringMVC+JPA
常用的排序算法的时间复杂度和空间复杂度
分类: 笔试面试题
2010-11-09 07:52 470人阅读 评论(2) 收藏 举报
常用的排序算法的时间复杂度和空间复杂度
排序法 最差时间分析 平均时间复杂度 稳定度 空间复杂度
冒泡排序 O(n2) O(n2) 稳定 O(1)
快速排序 O(n2) O(n*log2n) 不稳定 O(log2n)~O(n)
选择排序 O(n2) O(n2) 稳定 O(1)
二叉树排序 O(n2) O(n*log2n) 不一顶 O(n)
插入排序 O(n2) O(n2) 稳定 O(1)
堆排序 O(n*log2n) O(n*log2n) 不稳定 O(1)
希尔排序 O O 不稳定 O(1)
1、时间复杂度
(1)时间频度 一个算法执行所耗费的时间,从理论上是不能算出来的,必须上机运行测试才能知道。但我们不可能也没有必要对每个算法都上机测试,只需知道哪个算法花费的时间多,哪个算法花费的时间少就可以了。并且一个算法花费的时间与算法中语句的执行次数成正比例,哪个算法中语句执行次数多,它花费时间就多。一个算法中的语句执行次数称为语句频度或时间频度。记为T(n)。
(2)时间复杂度 在刚才提到的时间频度中,n称为问题的规模,当n不断变化时,时间频度T(n)也会不断变化。但有时我们想知道它变化时呈现什么规律。为此,我们引入时间复杂度概念。 一般情况下,算法中基本操作重复执行的次数是问题规模n的某个函数,用T(n)表示,若有某个辅助函数f(n),使得当n趋近于无穷大时,T(n)/f(n)的极限值为不等于零的常数,则称f(n)是T(n)的同数量级函数。记作T(n)=O(f(n)),称O(f(n)) 为算法的渐进时间复杂度,简称时间复杂度。
在各种不同算法中,若算法中语句执行次数为一个常数,则时间复杂度为O(1),另外,在时间频度不相同时,时间复杂度有可能相同,如T(n)=n2+3n+4与T(n)=4n2+2n+1它们的频度不同,但时间复杂度相同,都为O(n2)。 按数量级递增排列,常见的时间复杂度有:常数阶O(1),对数阶O(log2n),线性阶O(n), 线性对数阶O(nlog2n),平方阶O(n2),立方阶O(n3),..., k次方阶O(nk),指数阶O(2n)。随着问题规模n的不断增大,上述时间复杂度不断增大,算法的执行效率越低。 2、空间复杂度 与时间复杂度类似,空间复杂度是指算法在计算机内执行时所需存储空间的度量。记作: S(n)=O(f(n)) 我们一般所讨论的是除正常占用内存开销外的辅助存储单元规模。讨论方法与时间复杂度类似,不再赘述。
(3)渐进时间复杂度评价算法时间性能 主要用算法时间复杂度的数量级(即算法的渐近时间复杂度)评价一个算法的时间性能。
2、类似于时间复杂度的讨论,一个算法的空间复杂度(Space Complexity)S(n)定义为该算法所耗费的存储空间,它也是问题规模n的函数。渐近空间复杂度也常常简称为空间复杂度。
空间复杂度(Space Complexity)是对一个算法在运行过程中临时占用存储空间大小的量度。一个算法在计算机存储器上所占用的存储空间,包括存储算法本身所占用的存储空间,算法的输入输出数据所占用的存储空间和算法在运行过程中临时占用的存储空间这三个方面。算法的输入输出数据所占用的存储空间是由要解决的问题决定的,是通过参数表由调用函数传递而来的,它不随本算法的不同而改变。存储算法本身所占用的存储空间与算法书写的长短成正比,要压缩这方面的存储空间,就必须编写出较短的算法。算法在运行过程中临时占用的存储空间随算法的不同而异,有的算法只需要占用少量的临时工作单元,而且不随问题规模的大小而改变,我们称这种算法是“就地/"进行的,是节省存储的算法,如这一节介绍过的几个算法都是如此;有的算法需要占用的临时工作单元数与解决问题的规模n有关,它随着n的增大而增大,当n较大时,将占用较多的存储单元,例如将在第九章介绍的快速排序和归并排序算法就属于这种情况。
如当一个算法的空间复杂度为一个常量,即不随被处理数据量n的大小而改变时,可表示为O(1);当一个算法的空间复杂度与以2为底的n的对数成正比时,可表示为0(10g2n);当一个算法的空I司复杂度与n成线性比例关系时,可表示为0(n).若形参为数组,则只需要为它分配一个存储由实参传送来的一个地址指针的空间,即一个机器字长空间;若形参为引用方式,则也只需要为其分配存储一个地址的空间,用它来存储对应实参变量的地址,以便由系统自动引用实参变量。
http://blog.csdn.net/wuxinyicomeon/article/details/5996675
发表评论
-
java 回溯法求解 8皇后问题
2012-02-14 07:51 4486package endual; public cl ... -
算法设计与分析_回溯法分析
2012-02-12 09:53 2386回溯法 有通用的解题 ... -
经典而简单的贪心算法
2012-02-10 18:23 2024package endual; public cl ... -
贪心算法的一些感悟
2012-02-10 15:42 2409每一个贪心算法的背后 ... -
java排序算法的实现(转载)
2012-01-31 23:12 1482插入排序: package org.rut. ... -
计算时间和空间复杂度
2012-02-02 13:37 1753计算时间和空间复杂度 分类: C++学习 2 ... -
java 实现二叉树
2012-01-25 21:13 1465在计算机科学中,树是一种非常重要的数据结构,而且有非常广泛的应 ... -
java实现队列
2012-01-25 21:10 1561队列是一种重要的数据结构,在排队论和算法设计中有很重要的应用, ... -
java 栈(面试够了的)
2012-01-25 21:07 1571package endual;public class Sta ... -
java 栈的实现
2012-01-25 20:38 1412栈可以说是一种特殊的链表,它的主要特点是先进后出,是一种重要的 ... -
求解算法的时间复杂度的具体步骤
2012-01-25 19:14 1656求解算法的时间复杂度 ... -
时间复杂度和空间复杂度
2012-01-24 22:18 1980同一问题可用不同 ... -
时间复杂度和空间复杂度
2012-01-24 22:17 1996时间复杂度和空间复杂度 分类: Algorithm 2008 ... -
海量数据算法笔试题
2012-01-21 01:58 1589海量数据算法笔 ... -
[转]大数据量,海量数据 处理方法总结
2012-01-21 01:57 1220[转]大数据量,海量数据 处理方法总 ... -
时间复杂度的计算
2012-01-17 22:54 1363算法复杂度是在《数据 ... -
算法分类(按照效率降序排列)
2011-09-13 21:09 16691.常数级、 2.对数级 3.次线性级 4.线性级 5 ...
相关推荐
### 排序算法时间复杂度的研究 #### 引言 排序是计算机科学中的基础操作之一,主要用于对数据集中的元素按照特定的顺序进行排列。排序算法的效率直接关系到计算机程序的整体性能。根据数据是否完全加载到内存中,...
"学习电脑信息常用的排序算法的时间复杂度和空间复杂度" 时间复杂度是指算法执行所耗费的时间,它是算法中语句执行次数的函数,用 T(n) 表示。时间复杂度是评价算法时间性能的重要指标。常见的时间复杂度有:常数阶...
以下是对选择排序、冒泡排序、归并排序、快速排序和插入排序这五种常见排序算法的详细介绍,以及如何分析它们的时间复杂度。 1. **选择排序(Selection Sort)** - 原理:选择排序是一种简单直观的排序算法,它...
常用排序算法时间复杂度、空间复杂度总结。包括:冒泡排序、快速排序、选择排序、堆排序、插入排序、Shell排序、归并排序、基数排序。
算法的时间复杂度和空间复杂度 算法的时间复杂度和空间复杂度是衡量算法性能的两个重要指标。...算法的时间复杂度和空间复杂度是衡量算法性能的重要指标,选择合适的排序算法可以提高算法的效率和性能。
尽管在构建堆的过程中可能需要更多的交换和下沉操作,但由于堆排序算法的性质,每次操作仍然保证了时间复杂度不超过log n,因此总操作次数不会超过n log n。 平均情况下,堆排序的时间复杂度同样为O(n log n)。这是...
### 排序算法时间复杂度的研究 #### 引言 排序是计算机科学中的基础操作之一,在数据处理与分析中占据着重要地位。排序算法的好坏直接影响到计算机程序的执行效率,尤其是在处理大规模数据集时更为明显。根据数据...
时间复杂度的计算是为了比较算法的运行时间和空间要求,并使这种比较能与程序设计语言、编译系统、机器结构、处理器的速度及系统的负载等复杂因素无关。 在实际中,算法的时间复杂度可以分为常数阶、对数阶、线性阶...
总的来说,快速排序和归并排序是排序算法中的重要成员,它们在时间和空间复杂度上的分析对于理解排序算法的效率至关重要。深入理解和掌握这些算法有助于优化代码性能,提高软件系统的整体运行效率。
例如,一个快速排序算法的时间复杂度是O(n log n),但可能会使用额外的空间来辅助排序,因此它的空间复杂度可能是O(log n)。而插入排序虽然在最坏情况下时间复杂度是O(n^2),但它是一个原地排序算法,空间复杂度为O...
【排序算法时间复杂度】 排序算法是计算机科学中不可或缺的一部分,它们用于组织和优化数据,使其按照特定顺序排列。不同的排序算法有不同的...理解这些算法的时间和空间复杂度,有助于我们在编程时做出明智的选择。
在实际应用中,通常会结合具体情况和性能需求选择合适的排序算法。 通过分析`main.cpp`等源代码文件,我们可以模拟不同初始状态的数组,运行这些排序算法,并记录执行时间,从而直观地比较它们在不同情况下的性能。...
使用插入、冒泡、选择、快排、归并、堆排共6种排序算法对同一序列进行排序,统计排序所需的平均时间并比较算法在时间上的优劣。供学习使用。
稳定性和时间复杂度是评估排序算法性能的两个关键指标。 【稳定排序算法】指的是在排序过程中,相等元素的相对顺序不会改变。例如,冒泡排序、插入排序、归并排序和基数排序都是稳定的。冒泡排序通过相邻元素的比较...
* 算法的时间和空间复杂度 * 算法的正确性和可靠性 * 算法的优化和改进 二、时间复杂度的定义和计算 时间复杂度是指算法执行所需的时间成本,是算法设计与分析的核心概念之一。时间复杂度通常用大O符号表示,例如O...
本文将对几种常见的排序算法进行对比分析,包括它们的时间复杂度和稳定性特点,以便读者能够更好地理解每种算法的适用场景。 #### 1. 插入排序 **时间复杂度**: - 最好情况:当输入数组已经是有序的,时间复杂度...
在计算机科学领域,排序算法是数据结构和算法分析的重要组成部分,它涉及到如何高效地重新排列一个数据序列。本文将深入探讨几种常见的...理解这些排序算法的工作原理和时间复杂度,可以帮助我们编写出更加优化的代码。
以下是标题和描述中提到的12种排序算法及其时间复杂度和稳定性特点的详细解释: 1. 计数排序(Counting Sort): 这是一种非基于比较的排序算法,适用于整数排序。它通过统计每个数字出现的次数,直接确定每个元素...
1. 大O符号(Big-Oh)表示法:大O符号是用来描述算法运行时间或空间需求的渐进上界。在这些程序片段中,我们使用大O符号来表示每个循环结构的时间复杂度。 - (1) O(N):一个简单的for循环,随着N的增加,执行次数与...