`
hupy
  • 浏览: 189123 次
  • 性别: 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.空间复杂度不确定,要看待排序元素中最大值是多少.

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

分享到:
评论

相关推荐

    各排序算法时间复杂度的比较

    本文将比较几种排序算法的时间复杂度,包括快速排序、选择排序、直接插入排序和堆排序算法,并在排序数据中快速查找某一数据,给出查找是否成功,以及数据所在的位置信息。 在详细设计中,我们首先来读取文件中的...

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

    以下是对选择排序、冒泡排序、归并排序、快速排序和插入排序这五种常见排序算法的详细介绍,以及如何分析它们的时间复杂度。 1. **选择排序(Selection Sort)** - 原理:选择排序是一种简单直观的排序算法,它...

    桶排序的时间复杂度的计算公式.docx

    1. 桶内排序的时间复杂度:如果每个桶都使用插入排序,那么每个桶的时间复杂度为O((n/k)²),因为插入排序在最坏情况下需要O(n²)的时间。所以,所有桶的总时间复杂度为O(k * (n/k)²) = O(n²/k)。 2. 合并桶的...

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

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

    各种排序算法的稳定性和时间复杂度总结

    ### 各种排序算法的稳定性和时间复杂度总结 #### 排序算法的稳定性与时间复杂度概述 在计算机科学中,排序算法是基础且重要的组成部分,用于将一系列数据按照特定顺序排列。排序算法的效率通常由其时间复杂度决定...

    排序算法的时间复杂度分析

    在实际应用中,对于大规模数据的排序,我们通常会选择时间复杂度更低的算法,如快速排序、归并排序或堆排序等。这些算法在平均情况下能提供O(n log n)的时间复杂度,显著优于选择排序。然而,理解不同排序算法的时间...

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

    本文将深入探讨五种常见的排序算法:堆排序、归并排序、选择排序、快速排序以及插入排序,并分析它们在不同数组状态下的时间复杂度。 1. **堆排序**: 堆排序是一种基于比较的排序算法,它利用了完全二叉树的特性...

    各种排序算法的稳定性和时间复杂度小结

    稳定性和时间复杂度是评估排序算法性能的两个关键指标。 【稳定排序算法】指的是在排序过程中,相等元素的相对顺序不会改变。例如,冒泡排序、插入排序、归并排序和基数排序都是稳定的。冒泡排序通过相邻元素的比较...

    排序算法、时间对比及时间复杂度直线拟合

    插入排序在实现上,通常采用in-place排序(即只需用到O(1)的额外空间的排序),但它的最优和最差时间复杂度均为O(n^2)。 选择排序是一种不稳定的排序算法,它每次从未排序的序列中找到最小(或最大)元素,放到已...

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

    "学习电脑信息常用的排序算法的时间复杂度和空间复杂度" 时间复杂度是指算法执行所耗费的时间,它是算法中语句执行次数的函数,用 T(n) 表示。时间复杂度是评价算法时间性能的重要指标。常见的时间复杂度有:常数阶...

    快速排序与归并排序的时间复杂度分析

    快速排序的时间复杂度在最好情况下为O(n log n),最坏情况下为O(n^2),平均情况也是O(n log n)。由于在每一轮划分中,元素的移动次数可能小于比较次数,所以快速排序通常被认为是实际应用中效率较高的排序算法。但其...

    数据结构时间复杂度

    ### 数据结构时间复杂度详解 #### 一、算法时间复杂度定义 在计算机科学中,算法的时间复杂度是一个衡量算法效率的重要指标。它用来描述算法的运行时间与输入数据规模之间的关系。通常,我们关心的是算法运行时间...

    基于C语言的常见的8种排序的时间复杂度比较算法

    本文将深入探讨基于C语言实现的八种常见排序算法,并分析它们的时间复杂度,旨在帮助读者更好地理解各种排序方法的优劣。 1. 冒泡排序(Bubble Sort) 冒泡排序是一种简单的排序算法,它重复地遍历待排序的数列,一...

    根号n段归并排序算法时间复杂度分析过程

    对于每个单独的段,由于其大小不超过sqrt(n),我们可以使用线性时间复杂度O(sqrt(n))的简单排序方法(如插入排序)来对它们进行排序。然后,我们开始自底向上的归并过程,将相邻的两个已排序的段合并。每次合并操作...

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

    实验结果显示,快速排序的时间复杂度最低,为O(n log n),而冒泡排序和选择排序的时间复杂度分别为O(n^2)和O(n^2)。 四、实验结果和分析 实验结果显示,快速排序的时间复杂度最低,为O(n log n),这说明快速排序是...

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

    直接插入排序的时间复杂度为O(n^2),其中n是待排序元素的数量。这是因为对于每个待插入元素,都需要进行至多n-1次比较。直接插入排序的空间复杂度为O(1),因为它不需要额外的存储空间。此外,直接插入排序是稳定的,...

    时间复杂度计算练习.zip

    5. **案例分析**:提供具体的代码示例,分析其时间复杂度,如冒泡排序、选择排序、插入排序等。 6. **复杂度分析技巧**:教授如何忽略低阶项和常数系数,只保留最高阶项。 7. **平均和最坏情况**:区分算法在最好、...

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

    本实验测试的主题聚焦于堆排序算法的时间复杂度分析,由胡书晗进行研究。堆排序是一种基于比较的排序算法,其基本思想是将待排序的数据构造成一个大顶堆或小顶堆,然后通过交换堆顶元素与末尾元素,将最大(或最小)...

    多种排序时间复杂度的比较

    在计算机科学领域,排序算法是数据结构课程中的核心部分,其性能主要由时间复杂度来衡量。时间复杂度是分析算法效率的一种方式,它描述了算法执行时间与输入数据量之间的关系。本主题将深入探讨选择排序、冒泡排序和...

Global site tag (gtag.js) - Google Analytics