python八大选择排序_python之八大排序方法
排序方法 平均情况 最好情况 最坏情况 辅助空间 稳定性
冒泡排序 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之八大排序方法相关推荐
- python dataframe排序_python – Pandas DataFrame排序忽略了这种情况
我在 Python中有一个Pandas数据帧.数据帧的内容来自 here.我稍微修改了"单个"列中第一个字母的大小写.这是我有的: import pandas as pd df = ...
- python的内置函数列表排序_Python 列表的排序 - sort/sorted
Python 集合的遍历,推导及 filter/map/reduce 操作 中讲了对集合的 filter, map 和 reduce 操作,那还有 sort 排序呢?像 Java 一样,Python ...
- python动物重量排序_python动物重量排序_Python小白干货宝典:sorted()函数:列表元素排序...
定义: sorted() 函数对所有可迭代的对象进行排序操作. 内建函数 sorted 方法返回的是一个新的 list,而不是在原来的基础上进行的操作. 语法: sorted 语法: sorted(i ...
- problem a: 简单的整数排序_python里的排序
本篇文章主要讲: 自定义规则排序 多字段排序 开讲之前,先讲一些简单sorted()或者sort(),两者返回值不同!例如: sorted([5, 2, 3, 1, 4]) # 输出:[1, 2, 3 ...
- python中len字典_Python 字典(Dictionary) len()方法
Python 字典(Dictionary) len()方法 描述 Python 字典(Dictionary) len() 函数计算字典元素个数,即键的总数.高佣联盟 www.cgewang.com 语 ...
- python深入与提高_Python深入01 特殊方法与多范式
Python一切皆对象,但同时,Python还是一个多范式语言(multi-paradigm),你不仅可以使用面向对象的方式来编写程序,还可以用面向过程的方式来编写相同功能的程序(还有函数式.声明式等 ...
- python格式化字符串漏洞_Python字符串格式化的方法(两种)
本文介绍了Python字符串格式化,主要有两种方法,分享给大家,具体如下 用于字符串的拼接,性能更优. 字符串格式化有两种方式:百分号方式.format方式. 百分号方式比较老,而format方式是比 ...
- python 代码排布_python实现经典排序算法的示例代码
以下排序算法最终结果都默认为升序排列,实现简单,没有考虑特殊情况,实现仅表达了算法的基本思想. 冒泡排序 内层循环中相邻的元素被依次比较,内层循环第一次结束后会将最大的元素移到序列最右边,第二次结束后 ...
- python列表中字典排序_python中字典排序,列表中的字典排序
python中字典排序,列表中的字典排序 一.使用python模块:operator import operator #首先要导入模块operator x = {1:2, 3:4, 4:3, 2:1, ...
最新文章
- php比较长的configure
- 安装docker和docker-compose
- Linux centos 6.7设置MySQL为开机启动
- linux多线程计算pi,使用蒙特卡洛方法多线程计算pi值
- java date linux,Java中Date,SimpleDateFormat
- typeorm_Nestjs 热更新 + typeorm 配置
- 多种时间格式字符串转换为Date对象
- Linux进程间通信(四) - 共享内存
- 宏基因组大数据分析的质量控制流程规范
- GDI+入门(5、在GDI+中绘制带动画效果的图片)
- Java 集合(初稿)
- JavaScript:indexOf()方法
- iOS逆向工程整理 HOOK微信抢红包
- [应用广播], 一览华夏文化,诗词三万首震撼上线
- DirtyWordsFilter(脏字过滤)
- ETCD数据库源码分析——Cluster membership changes日志
- php培训月度总结,PHP常量,数组和分支语句小结--PHP培训十期线上班
- Qt5 QAudioOutput+QIODevice 播放固定频率的声音
- vue通过笛卡儿积实现sku库存配置
- [运维] 华为交换机使用笔记
热门文章
- linux如何设置账号全民,linux基本练习:用户和组管理的相关练习
- 大学c语言下上机考试题,计算机考试二级C语言上机试题下[5]
- linux ejb远程调用,[转载]在容器外使用EJB 3.0 Persistence
- python开源项目homeassistant_树莓派安装家庭助理,Homeassistant,HASS
- php 段落加上标签,php – 如何在段落中添加ReadMore
- mysql mode_mysql中的sql_mode
- img 标签 点击跳出图层_你竟然不知道cad图层也可以导出与导入?
- 其中一个页签慢_Word中如何快速定位到页、行、表格、公式,查找与替换方法...
- 【论文阅读】A Gentle Introduction to Graph Neural Networks [图神经网络入门](2)
- 深度学习之自编码器(4)变分自编码器