排序方法        平均情况        最好情况        最坏情况        辅助空间        稳定性

冒泡排序        O(n^2)         O(n)             O(n^2)           O(1)           稳定

选择排序        O(n^2)         O(n^2)         O(n^2)           O(1)          不稳定

插入排序        O(n^2)         O(n)             O(n^2)           O(1)           稳定

希尔排序O(n*log(n))~O(n^2) O(n^1.3)     O(n^2)           O(1)          不稳定

堆排序         O(n*log(n))    O(n*log(n))    O(n*log(n))     O(1)           不稳定

归并排序      O(n*log(n))    O(n*log(n))    O(n*log(n))     O(n)             稳定

快速排序      O(n*log(n))    O(n*log(n))    O(n^2)           O(1)           不稳定

冒泡排序经过优化以后,最好时间复杂度可以达到O(n)。设置一个标志位,如果有一趟比较中没有发生任何交换,可提前结束,因此在正序情况下,时间复杂度为O(n)。选择排序在最坏和最好情况下,都必须在剩余的序列中选择最小(大)的数,与已排好序的序列后一个位置元素做交换,依次最好和最坏时间复杂度均为O(n^2)。插入排序是在把已排好序的序列的后一个元素插入到前面已排好序(需要选择合适的位置)的序列中,在正序情况下时间复杂度为O(n)。堆是完全二叉树,因此树的深度一定是log(n)+1,最好和最坏时间复杂度均为O(n*log(n))。归并排序是将大数组分为两个小数组,依次递归,相当于二叉树,深度为log(n)+1,因此最好和最坏时间复杂度都是O(n*log(n))。快速排序在正序或逆序情况下,每次划分只得到比上一次划分少一个记录的子序列,用递归树画出来,是一棵斜树,此时需要n-1次递归,且第i次划分要经过n-i次关键字比较才能找到第i个记录,因此时间复杂度是\sum_{i=1}^{n-1}(n-i)=n(n-1)/2,即O(n^2)。

python八大选择排序_python之八大排序方法相关推荐

  1. python dataframe排序_python – Pandas DataFrame排序忽略了这种情况

    我在 Python中有一个Pandas数据帧.数据帧的内容来自 here.我稍微修改了"单个"列中第一个字母的大小写.这是我有的: import pandas as pd df = ...

  2. python的内置函数列表排序_Python 列表的排序 - sort/sorted

    Python 集合的遍历,推导及 filter/map/reduce 操作 中讲了对集合的 filter, map 和 reduce 操作,那还有 sort 排序呢?像 Java 一样,Python  ...

  3. python动物重量排序_python动物重量排序_Python小白干货宝典:sorted()函数:列表元素排序...

    定义: sorted() 函数对所有可迭代的对象进行排序操作. 内建函数 sorted 方法返回的是一个新的 list,而不是在原来的基础上进行的操作. 语法: sorted 语法: sorted(i ...

  4. problem a: 简单的整数排序_python里的排序

    本篇文章主要讲: 自定义规则排序 多字段排序 开讲之前,先讲一些简单sorted()或者sort(),两者返回值不同!例如: sorted([5, 2, 3, 1, 4]) # 输出:[1, 2, 3 ...

  5. python中len字典_Python 字典(Dictionary) len()方法

    Python 字典(Dictionary) len()方法 描述 Python 字典(Dictionary) len() 函数计算字典元素个数,即键的总数.高佣联盟 www.cgewang.com 语 ...

  6. python深入与提高_Python深入01 特殊方法与多范式

    Python一切皆对象,但同时,Python还是一个多范式语言(multi-paradigm),你不仅可以使用面向对象的方式来编写程序,还可以用面向过程的方式来编写相同功能的程序(还有函数式.声明式等 ...

  7. python格式化字符串漏洞_Python字符串格式化的方法(两种)

    本文介绍了Python字符串格式化,主要有两种方法,分享给大家,具体如下 用于字符串的拼接,性能更优. 字符串格式化有两种方式:百分号方式.format方式. 百分号方式比较老,而format方式是比 ...

  8. python 代码排布_python实现经典排序算法的示例代码

    以下排序算法最终结果都默认为升序排列,实现简单,没有考虑特殊情况,实现仅表达了算法的基本思想. 冒泡排序 内层循环中相邻的元素被依次比较,内层循环第一次结束后会将最大的元素移到序列最右边,第二次结束后 ...

  9. python列表中字典排序_python中字典排序,列表中的字典排序

    python中字典排序,列表中的字典排序 一.使用python模块:operator import operator #首先要导入模块operator x = {1:2, 3:4, 4:3, 2:1, ...

最新文章

  1. php比较长的configure
  2. 安装docker和docker-compose
  3. Linux centos 6.7设置MySQL为开机启动
  4. linux多线程计算pi,使用蒙特卡洛方法多线程计算pi值
  5. java date linux,Java中Date,SimpleDateFormat
  6. typeorm_Nestjs 热更新 + typeorm 配置
  7. 多种时间格式字符串转换为Date对象
  8. Linux进程间通信(四) - 共享内存
  9. 宏基因组大数据分析的质量控制流程规范
  10. GDI+入门(5、在GDI+中绘制带动画效果的图片)
  11. Java 集合(初稿)
  12. JavaScript:indexOf()方法
  13. iOS逆向工程整理 HOOK微信抢红包
  14. [应用广播], 一览华夏文化,诗词三万首震撼上线
  15. DirtyWordsFilter(脏字过滤)
  16. ETCD数据库源码分析——Cluster membership changes日志
  17. php培训月度总结,PHP常量,数组和分支语句小结--PHP培训十期线上班
  18. Qt5 QAudioOutput+QIODevice 播放固定频率的声音
  19. vue通过笛卡儿积实现sku库存配置
  20. [运维] 华为交换机使用笔记

热门文章

  1. linux如何设置账号全民,linux基本练习:用户和组管理的相关练习
  2. 大学c语言下上机考试题,计算机考试二级C语言上机试题下[5]
  3. linux ejb远程调用,[转载]在容器外使用EJB 3.0 Persistence
  4. python开源项目homeassistant_树莓派安装家庭助理,Homeassistant,HASS
  5. php 段落加上标签,php – 如何在段落中添加ReadMore
  6. mysql mode_mysql中的sql_mode
  7. img 标签 点击跳出图层_你竟然不知道cad图层也可以导出与导入?
  8. 其中一个页签慢_Word中如何快速定位到页、行、表格、公式,查找与替换方法...
  9. 【论文阅读】A Gentle Introduction to Graph Neural Networks [图神经网络入门](2)
  10. 深度学习之自编码器(4)变分自编码器