一、 分类描述

1. 插入排序

直接插入排序:算法简单,稳定,适用于数据量小的情况

希尔排序:直接插入排序的改进版,不稳定,对于待排序序列的不同情况效率相近

2. 交换排序

冒泡排序:算法简单,稳定,在数据基本有序的情况下效率较高

快速排序:算法效率高,不稳定,需要额外的辅助空间

3. 选择排序

直接选择排序:任何情况时间复杂度均为O(n^2),不稳定,其优势在于交换次数少

堆排序:不稳定,对序列的原始顺序不敏感,适用于数据量大的情况

4. 归并排序

分治策略,稳定,适用于待排序列整体无序、部分有序的情况,需要额外的辅助空间

5. 基数排序

稳定;适用范围有限;当数据位数较小时,时间复杂度近似为O(n),效率高于其它的稳定性排序算法

二、总结比较表

类别

排序方法

时间复杂度

空间复杂度

稳定性

复杂性

最好

最坏

平均

插入排序

直接插入

O(n)

O(n^2)

O(n^2)

O(1)

O

简单

希尔排序

O(n^1.3)

O(n^2)

O(n^1.x)

O(1)

X

较复杂

交换排序

冒泡排序

O(n)

O(n^2)

O(n^2)

O(1)

O

简单

快速排序

O(nlogn)

O(n^2)

O(nlogn)

O(logn)

X

较复杂

选择排序

直接选择

O(n^2)

O(n^2)

O(n^2)

O(1)

X

简单

堆排序

O(nlogn)

O(nlogn)

O(nlogn)

O(1)

X

较复杂

归并排序

O(nlogn)

O(nlogn)

O(nlogn)

O(n)

O

较复杂

基数排序

O(d(n+r))

O(d(n+r))

O(d(n+r))

O(n+r)

O

较复杂

转载于:https://www.cnblogs.com/ltxdzh/p/3960141.html

算法笔记--八个常见排序算法总结相关推荐

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

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

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

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

  3. python常用算法有哪些_python常见排序算法基础教程

    前言:前两天腾讯笔试受到1万点暴击,感觉浪费我两天时间去牛客网做题--这篇博客介绍几种简单/常见的排序算法,算是整理下. 时间复杂度 (1)时间频度一个算法执行所耗费的时间,从理论上是不能算出来的,必 ...

  4. 常见排序算法详解 (收藏!)

    目录 冒泡排序 鸡尾酒排序 选择排序 插入排序 二分插入排序 希尔排序 归并排序 堆排序 快速排序 我们通常所说的排序算法往往指的是内部排序算法,即数据记录在内存中进行排序. 排序算法大体可分为两种: ...

  5. python常见排序算法解析

    python--常见排序算法解析 算法是程序员的灵魂. 下面的博文是我整理的感觉还不错的算法实现 原理的理解是最重要的,我会常回来看看,并坚持每天刷leetcode 本篇主要实现九(八)大排序算法,分 ...

  6. 【十种常见排序算法】

    十种常见排序算法可以分为两大类: 比较类排序:通过比较来决定元素间的相对次序,由于其时间复杂度不能突破O(nlogn),因此也称为非线性时间比较类排序. 非比较类排序:不通过比较来决定元素间的相对次序 ...

  7. 【排序算法】常见排序算法总结

    一.排序算法概述 排序,即将一组数据按照递增或递减的规则进行排列.根据不同的规则,排序算法的分类也不尽相同,常见分类标准有:内部排序和外部排序.内部排序是数据记录在内存中进行排序,而外部排序是因排序的 ...

  8. php常见排序算去,PHP兑现常见排序算法

    PHP实现常见排序算法 //插入排序(一维数组) function insert_sort($arr){ $count = count($arr); for($i=1; $i $tmp = $arr[ ...

  9. Java常见排序算法

    Java常见排序算法 转载于:https://www.cnblogs.com/hfultrastrong/p/7829889.html

最新文章

  1. Java多线程设计模式(4)线程池模式
  2. WordPress.com 开源,弃 PHP 改用 JavaScript
  3. HTML5 Placeholder实现input背景文字提示效果
  4. 大数据计算存储资源池_管家实践:轻松玩转大数据计算服务
  5. php 精度运算,PHP BC 库(任意精度数字运算) | 网游世界
  6. itext替换pdf中的中文
  7. Bruce的程序员语录
  8. php大写数字转换,php数字如何转换大写
  9. java 高并发商城库存订单处理,下单减库存,如何解决高并发减库存问题
  10. (3)tesorflow 计算模型复杂度
  11. 【tinyint和int区别】
  12. 卸载 ibus 使Ubuntu16.04任务栏与桌面图标消失
  13. H5加速、WebView加速、Hybrid 常见方案对比
  14. Word论文转化成静态文本
  15. CGAL 点云数据读取与保存
  16. 分享一个404页面(猴子动态SVG图)
  17. 我国经济最强的城市是哪个?北京、上海、还是深圳?
  18. ctfshow CMS系列writeup(web477-web479)
  19. 医院信息学项目-门诊医生工作站(1)
  20. 树莓派frp服务器和客户端配置教程

热门文章

  1. 原生js实现canvas气泡冒泡效果
  2. django之创建第6-1个项目-自定义过滤器
  3. Android---AlertDialog
  4. 监控工具—Prometheus—监控Java程序
  5. Zookeeper常用命令操作,javaAPI操作之Curator框架 API
  6. HTTP与HttpServlet
  7. 微信小程序的z-index在苹果ios无效
  8. 用django2.1开发公司官网(上)
  9. spring mvc静态资源访问的配置
  10. 初始化JQuery方法与(function(){})(para)匿名方法介绍