下面总结几种常见的排序算法,包括插入排序、选择排序、快速排序、归并排序和堆排序。

时间复杂度:

插入排序 选择排序 快速排序 归并排序 堆排序
Ο(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. 常见排序算法的时间复杂度、空间复杂度、稳定性比较

    常见排序算法的时间空间复杂度.稳定性比较 一.排序算法比较 注: 1.归并排序可以通过手摇算法将空间复杂度降到O(1),但是时间复杂度会提高. 2. 基数排序时间复杂度为O(N*M),其中N为数据个数 ...

  2. 四种常见排序算法的对比和总结 插入排序、归并排序、快速排序、堆排序

    目录 一.排序算法的时间复杂度 二.排序算法是否是原地排序 三.排序算法的额外空间 四.排序算法的稳定性 Stable 五.总结 这里我们要总结的排序算法主要有4个,分别是插入排序Insertion ...

  3. 八种常见排序算法细讲

    目录 常见的八种排序 直接插入排序 希尔排序 直接选择排序 堆排序 冒泡排序 快速排序 hoare版本 挖坑法 前后指针版 快速排序代码 归并排序 计数排序 常见的八种排序 直接插入排序 ⾸先,我们将 ...

  4. Java几种常见排序算法与代码实现

    前言: 排序算法也算是每年校招.春招.社招都会问到的问题,虽然每次复习了就忘,但是也可以隔一段时间又拿出来看看. 其中,排序方式指,内部还是外部排序.只需要内部内存就可以的称为内部排序,数据量太大需要 ...

  5. 利用Python实现几种常见排序算法

    一.排序算法概览 插入排序:直接插入排序,二分法插入排序 选择排序:直接选择排序,堆排序 交换排序:冒泡排序,快速排序 归并排序 二.代码实现 1.直接插入排序 最简单直接的一种方式,序列在排序中可分 ...

  6. php 各种排序算法,PHP四种常见排序算法

    一.冒泡排序: 冒泡排序可以说是最常见,也是最简单,最经典的排序算法了. 它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来.走访数列的工作是重复地进行直到没有再需要交换 ...

  7. JavaScript版几种常见排序算法

    说明 写这个主要是为了锻炼自己,并无实际意义. 每个浏览器测试得出的数据会不一样.比如我用chrome 测试 一般快速排序都会最快,IE 则根据数组长度有可能希尔最快. 不要用太大数据去测试冒泡排序( ...

  8. php 版本排序,四种常见排序算法--PHP版本

    1.冒泡排序法 /** * 冒泡排序 * des 对一组数据,比较相邻数据的大小,将值小数据在前面,值大的数据放在后面. */ $array = [2,5,1,3,7,4]; $result = bu ...

  9. 【知了堂学习笔记】java 编写几种常见排序算法3

    排序的分类: 1.希尔排序 希尔排序是快速插入排序的改进版,希尔排序是把记录按下标的一定增量分组,对每组使用直接插入排序算法排序:随着增量逐渐减少,每组包含的关键词越来越多,当增量减至1时,整个文件恰 ...

  10. 别说我不懂排序!几种常见排序算法(一)

    part1:冒泡排序 冒泡排序的核心:一步一步交换相邻位置的数据! 代码示例 for 循环实现. def bubble_sort1(arr):# 交换的细节def swap(i,j):arr[i],a ...

最新文章

  1. MySQL高可用之mysql-mmm环境搭建
  2. Py之pipenv:Python包的管理利器pipenv简介、安装、使用方法详细攻略
  3. 音视频开发(19)---Android视频开发基础(一)
  4. Java基础面试题:常见的异常类有哪些?
  5. mariadb修改默认字符集
  6. Linux音频驱动-AOSC之Codec
  7. 度假村酒店官方网站模板里面包含7个子页面,适合酒店住宿网站模板下载
  8. 华为盒子显示未连接服务器,华为盒子 连接服务器地址
  9. echarts地图设置label引导线
  10. 本草纲目pdf彩图版下载_本草纲目pdf下载|本草纲目彩色插图版PDF完整版_ - 极光下载站...
  11. mysql_front安装_MySql5.5安装步骤及MySql_Front视图配置
  12. LA 4487 Exclusive-OR
  13. MDM移动设备管理概述
  14. SVG绘制不同形状的图形
  15. js获取唯一设备码_前端JS获取设备IP地址和唯一标识
  16. (二)机器学习的流程概述,线性规划,图像分类
  17. 用JAVA写一个画图程序(课程设计)
  18. 海思SDK学习(7)海思媒体处理软件平台MMP(6)视频编码VENC
  19. 机器学习实战- 回归(Regression) 概述
  20. Arm物联网全面解决方案加速产业创新,赋能开发者多样化市场

热门文章

  1. 一个网站的诞生- MagicDict未来予想図1 [水平分割数据表的构想]
  2. 【火】【转】楼市三字经·新政杂戏
  3. Sql Server 存储过程分页大全(2005,2000)
  4. windows 2003下配置IIS6为iis5方式的隔离模式运行
  5. 美团一面:如何优化慢SQL?
  6. 程序员入职 6 天即被开除:项目丢了,新人背锅?
  7. 鸟瞰 Java 并发框架
  8. 从网管到首席架构师,我这十年的成长感悟
  9. 梦想,没想到这么快就实现了!
  10. 【BAT面试题系列】Java面试必考题JVM详解,BAT师兄深度解析背后原理