几种常见排序算法的时间复杂度和简单描述
下面总结几种常见的排序算法,包括插入排序、选择排序、快速排序、归并排序和堆排序。
时间复杂度:
插入排序 | 选择排序 | 快速排序 | 归并排序 | 堆排序 |
Ο(n2) | Ο(n2) | Ο(nlog(n)) | Ο(nlog(n)) | Ο(nlog(n)) |
算法概述:
插入排序:每次从未排好序的数据堆中拿出一个数,插入到已排好序的数据队列的正确位置。
选择排序:每次从未排好序的数据堆中找到最小的数,插入到已排好序的数据队列的头部。
快速排序:以数据堆中的一个数为标准,将数据堆分为小于等于和大于该数的两堆,对于分割后的两堆数再分别利用上述方法进行分割,以此类推,直到堆中只有一个数位置。
归并排序:将数据堆中的数两两组队排序,对于排序好的这些子堆再两两组队排序,以此类推,直到只剩下一个堆。
堆排序:基于堆的排序算法,分为最大堆和最小堆。排序分为两个过程堆的构造和堆的排序。
http://book.51cto.com/art/201108/287073.htm
转载于:https://www.cnblogs.com/liujinyao/p/4693137.html
几种常见排序算法的时间复杂度和简单描述相关推荐
- 常见排序算法的时间复杂度、空间复杂度、稳定性比较
常见排序算法的时间空间复杂度.稳定性比较 一.排序算法比较 注: 1.归并排序可以通过手摇算法将空间复杂度降到O(1),但是时间复杂度会提高. 2. 基数排序时间复杂度为O(N*M),其中N为数据个数 ...
- 四种常见排序算法的对比和总结 插入排序、归并排序、快速排序、堆排序
目录 一.排序算法的时间复杂度 二.排序算法是否是原地排序 三.排序算法的额外空间 四.排序算法的稳定性 Stable 五.总结 这里我们要总结的排序算法主要有4个,分别是插入排序Insertion ...
- 八种常见排序算法细讲
目录 常见的八种排序 直接插入排序 希尔排序 直接选择排序 堆排序 冒泡排序 快速排序 hoare版本 挖坑法 前后指针版 快速排序代码 归并排序 计数排序 常见的八种排序 直接插入排序 ⾸先,我们将 ...
- Java几种常见排序算法与代码实现
前言: 排序算法也算是每年校招.春招.社招都会问到的问题,虽然每次复习了就忘,但是也可以隔一段时间又拿出来看看. 其中,排序方式指,内部还是外部排序.只需要内部内存就可以的称为内部排序,数据量太大需要 ...
- 利用Python实现几种常见排序算法
一.排序算法概览 插入排序:直接插入排序,二分法插入排序 选择排序:直接选择排序,堆排序 交换排序:冒泡排序,快速排序 归并排序 二.代码实现 1.直接插入排序 最简单直接的一种方式,序列在排序中可分 ...
- php 各种排序算法,PHP四种常见排序算法
一.冒泡排序: 冒泡排序可以说是最常见,也是最简单,最经典的排序算法了. 它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来.走访数列的工作是重复地进行直到没有再需要交换 ...
- JavaScript版几种常见排序算法
说明 写这个主要是为了锻炼自己,并无实际意义. 每个浏览器测试得出的数据会不一样.比如我用chrome 测试 一般快速排序都会最快,IE 则根据数组长度有可能希尔最快. 不要用太大数据去测试冒泡排序( ...
- php 版本排序,四种常见排序算法--PHP版本
1.冒泡排序法 /** * 冒泡排序 * des 对一组数据,比较相邻数据的大小,将值小数据在前面,值大的数据放在后面. */ $array = [2,5,1,3,7,4]; $result = bu ...
- 【知了堂学习笔记】java 编写几种常见排序算法3
排序的分类: 1.希尔排序 希尔排序是快速插入排序的改进版,希尔排序是把记录按下标的一定增量分组,对每组使用直接插入排序算法排序:随着增量逐渐减少,每组包含的关键词越来越多,当增量减至1时,整个文件恰 ...
- 别说我不懂排序!几种常见排序算法(一)
part1:冒泡排序 冒泡排序的核心:一步一步交换相邻位置的数据! 代码示例 for 循环实现. def bubble_sort1(arr):# 交换的细节def swap(i,j):arr[i],a ...
最新文章
- MySQL高可用之mysql-mmm环境搭建
- Py之pipenv:Python包的管理利器pipenv简介、安装、使用方法详细攻略
- 音视频开发(19)---Android视频开发基础(一)
- Java基础面试题:常见的异常类有哪些?
- mariadb修改默认字符集
- Linux音频驱动-AOSC之Codec
- 度假村酒店官方网站模板里面包含7个子页面,适合酒店住宿网站模板下载
- 华为盒子显示未连接服务器,华为盒子 连接服务器地址
- echarts地图设置label引导线
- 本草纲目pdf彩图版下载_本草纲目pdf下载|本草纲目彩色插图版PDF完整版_ - 极光下载站...
- mysql_front安装_MySql5.5安装步骤及MySql_Front视图配置
- LA 4487 Exclusive-OR
- MDM移动设备管理概述
- SVG绘制不同形状的图形
- js获取唯一设备码_前端JS获取设备IP地址和唯一标识
- (二)机器学习的流程概述,线性规划,图像分类
- 用JAVA写一个画图程序(课程设计)
- 海思SDK学习(7)海思媒体处理软件平台MMP(6)视频编码VENC
- 机器学习实战- 回归(Regression) 概述
- Arm物联网全面解决方案加速产业创新,赋能开发者多样化市场