`
jimmee
  • 浏览: 538770 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

各种排序算法比较:时间复杂度,空间复杂度

 
阅读更多

时间复杂度

n^2表示n的平方,选择排序有时叫做直接选择排序或简单选择排序

 

排序方法 平均时间 最好时间 最坏时间
桶排序(不稳定) O(n) O(n) O(n)
基数排序(稳定) O(n) O(n) O(n)
归并排序(稳定) O(nlogn) O(nlogn) O(nlogn)
快速排序(不稳定) O(nlogn) O(nlogn) O(n^2)
堆排序(不稳定) O(nlogn) O(nlogn) O(nlogn)
希尔排序(不稳定) O(n^1.25)    
冒泡排序(稳定) O(n^2) O(n) O(n^2)
选择排序(不稳定) O(n^2) O(n^2) O(n^2)
直接插入排序(稳定) O(n^2) O(n) O(n^2)

 

O(n)这样的标志叫做渐近时间复杂度,是个近似值.各种渐近时间复杂度由小到大的顺序如下

O(1) < O(logn) < O(n) < O(nlogn) < O(n^2) < O(n^3) < O(2^n) < O(n!) < O(n^n)

一般时间复杂度到了2^n(指数阶)及更大的时间复杂度,这样的算法我们基本上不会用了,太不实用了.比如递归实现的汉诺塔问题算法就是O(2^n).

平方阶(n^2)的算法是勉强能用,而nlogn及更小的时间复杂度算法那就是非常高效的算法了啊.

 

空间复杂度

冒泡排序,简单选择排序,堆排序,直接插入排序,希尔排序的空间复杂度为O(1),因为需要一个临时变量来交换元素位置,(另外遍历序列时自然少不了用一个变量来做索引)

快速排序空间复杂度为logn(因为递归调用了) ,归并排序空间复杂是O(n),需要一个大小为n的临时数组.

基数排序的空间复杂是O(n),桶排序的空间复杂度不确定

 

 

最快的排序算法是桶排序

所有排序算法中最快的应该是桶排序(很多人误以为是快速排序,实际上不是.不过实际应用中快速排序用的多)但桶排序一般用的不多,因为有几个比较大的缺陷.

1.待排序的元素不能是负数,小数.

2.空间复杂度不确定,要看待排序元素中最大值是多少.

所需要的辅助数组大小即为最大元素的值.

分享到:
评论

相关推荐

    学习电脑信息常用的排序算法的时间复杂度和空间复杂度

    下面是常用的排序算法的时间复杂度和空间复杂度: 冒泡排序:时间复杂度 O(n2),空间复杂度 O(1) 快速排序:时间复杂度 O(nlog2n),空间复杂度 O(log2n)~O(n) 选择排序:时间复杂度 O(n2),空间复杂度 O(1) ...

    排序算法比较 时间复杂度 稳定性描述

    ### 排序算法比较:时间复杂度与稳定性分析 在计算机科学中,排序算法是处理大量数据时不可或缺的一部分。本文将对几种常见的排序算法进行对比分析,包括它们的时间复杂度和稳定性特点,以便读者能够更好地理解每种...

    排序算法时间复杂度的分析java语言描述

    在Java编程语言中,实现各种排序算法能够帮助我们理解这些算法的工作原理,并评估其性能。以下是对选择排序、冒泡排序、归并排序、快速排序和插入排序这五种常见排序算法的详细介绍,以及如何分析它们的时间复杂度。...

    排序算法在不同数组状态下时间复杂度的比较

    通过分析`main.cpp`等源代码文件,我们可以模拟不同初始状态的数组,运行这些排序算法,并记录执行时间,从而直观地比较它们在不同情况下的性能。这些比较有助于优化算法选择,提高程序运行效率。

    数据机构综合课设内部排序算法比较.docx

    **内部排序算法详解** 内部排序是指数据记录在内存中...在比较排序算法时,不仅要关注时间复杂度,还要考虑实际运行环境和特定数据集下的性能。通过生成随机数据并进行多次实验,可以更好地评估和理解这些算法的性能。

    排序算法时间复杂度的研究.pdf

    ### 排序算法时间复杂度的研究 #### 引言 排序是计算机科学中的基础操作之一,主要用于对数据集中的元素按照特定的顺序进行排列。排序算法的效率直接关系到计算机程序的整体性能。根据数据是否完全加载到内存中,...

    算法的时间复杂度和空间复杂度

    算法的时间复杂度和空间复杂度 算法的时间复杂度和空间复杂度是衡量算法性能的两个重要指标。...算法的时间复杂度和空间复杂度是衡量算法性能的重要指标,选择合适的排序算法可以提高算法的效率和性能。

    各类排序算法分析比较特点复杂度分析

    不同的排序算法有不同的特点,如稳定性、所需的空间复杂度、时间复杂度等。了解这些特点有助于在具体应用中选择合适的排序算法。例如,对于小规模的数据集,插入排序可能更为合适;而对于大规模数据集,快速排序、堆...

    各种排序算法时间复杂度1

    【排序算法时间复杂度】 排序算法是计算机科学中不可或缺的一部分,它们用于组织和优化数据,使其按照特定顺序排列。不同的排序算法有不同的时间复杂度,这决定了它们在处理大量数据时的效率。时间复杂度通常用来...

    各种排序算法比较

    ### 各种排序算法比较 #### 一、稳定性比较 稳定性是排序算法中一个重要的特性,指的是相等的元素在排序前后保持原有的相对位置不变。根据文档提供的信息,我们可以总结出以下结论: - **稳定排序**:插入排序、...

    算法时间复杂度的实验测试.zip_堆排序;算法时间复杂度_时间复杂度_胡书晗

    堆排序是原地排序算法,不需要额外的存储空间,空间复杂度为O(1)。这意味着堆排序在内存有限的情况下具有显著优势。 胡书晗的实验可能包括以下步骤:首先,设计程序实现堆排序算法;其次,选择不同规模的随机数组...

    算法复杂度——时间复杂度和空间复杂度.doc

    ### 算法复杂度详解:时间复杂度与空间复杂度 #### 一、时间复杂度 **1. 时间频度** 在讨论算法效率时,我们通常关注算法执行所耗费的时间。理论上直接计算出算法的确切执行时间是不可行的,这需要具体的硬件...

    排序算法与时间复杂度得测量

    它们不是基于比较的排序算法,因此在某些情况下能实现线性时间复杂度O(n)。 为了衡量这些算法的效率,我们通常使用时间复杂度作为评估标准。时间复杂度表示算法运行所需时间与输入规模之间的关系。在C++编程中,...

    基于Java的算法项目.zip

    #### 排序算法 - **直接选择排序**:平均复杂度O(n^2),辅助空间O(1),稳定。 - **冒泡排序**:平均复杂度O(n^2),辅助空间O(1),稳定。 - **直接插入排序**:平均复杂度O(n^2),辅助空间O(1),稳定。 - **归并排序*...

    排序算法.docx

    2. 空间复杂度:衡量算法在运行过程中所需的额外存储空间。有些算法如计数排序和桶排序需要额外的空间来存储中间结果。 3. 稳定性:如前所述,稳定的排序算法保持相等元素的相对顺序。 4. 实现方法:常见的分类...

    算法的设计与分析——时间复杂度.docx

    * 算法的时间和空间复杂度 * 算法的正确性和可靠性 * 算法的优化和改进 二、时间复杂度的定义和计算 时间复杂度是指算法执行所需的时间成本,是算法设计与分析的核心概念之一。时间复杂度通常用大O符号表示,例如O...

    排序算法时间复杂度的研究

    ### 排序算法时间复杂度的研究 #### 引言 排序是计算机科学中的基础操作之一,在数据处理与分析中占据着重要地位。排序算法的好坏直接影响到计算机程序的执行效率,尤其是在处理大规模数据集时更为明显。根据数据...

    实现了7种排序算法.三种复杂度排序.三种nlogn复杂度排序(堆排序,归并排序,快速排序)一种线性复杂度的排序.zip

    直接插入排序的空间复杂度为O(1),因为它不需要额外的存储空间。此外,直接插入排序是稳定的,即相等的元素在排序后保持原有的相对顺序。 直接插入排序适用于待排序序列较小或基本有序的情况,因为它在处理小规模...

Global site tag (gtag.js) - Google Analytics