算法笔记--八个常见排序算法总结
一、 分类描述
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
算法笔记--八个常见排序算法总结相关推荐
- 八种常见排序算法细讲
目录 常见的八种排序 直接插入排序 希尔排序 直接选择排序 堆排序 冒泡排序 快速排序 hoare版本 挖坑法 前后指针版 快速排序代码 归并排序 计数排序 常见的八种排序 直接插入排序 ⾸先,我们将 ...
- php 各种排序算法,PHP四种常见排序算法
一.冒泡排序: 冒泡排序可以说是最常见,也是最简单,最经典的排序算法了. 它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来.走访数列的工作是重复地进行直到没有再需要交换 ...
- python常用算法有哪些_python常见排序算法基础教程
前言:前两天腾讯笔试受到1万点暴击,感觉浪费我两天时间去牛客网做题--这篇博客介绍几种简单/常见的排序算法,算是整理下. 时间复杂度 (1)时间频度一个算法执行所耗费的时间,从理论上是不能算出来的,必 ...
- 常见排序算法详解 (收藏!)
目录 冒泡排序 鸡尾酒排序 选择排序 插入排序 二分插入排序 希尔排序 归并排序 堆排序 快速排序 我们通常所说的排序算法往往指的是内部排序算法,即数据记录在内存中进行排序. 排序算法大体可分为两种: ...
- python常见排序算法解析
python--常见排序算法解析 算法是程序员的灵魂. 下面的博文是我整理的感觉还不错的算法实现 原理的理解是最重要的,我会常回来看看,并坚持每天刷leetcode 本篇主要实现九(八)大排序算法,分 ...
- 【十种常见排序算法】
十种常见排序算法可以分为两大类: 比较类排序:通过比较来决定元素间的相对次序,由于其时间复杂度不能突破O(nlogn),因此也称为非线性时间比较类排序. 非比较类排序:不通过比较来决定元素间的相对次序 ...
- 【排序算法】常见排序算法总结
一.排序算法概述 排序,即将一组数据按照递增或递减的规则进行排列.根据不同的规则,排序算法的分类也不尽相同,常见分类标准有:内部排序和外部排序.内部排序是数据记录在内存中进行排序,而外部排序是因排序的 ...
- php常见排序算去,PHP兑现常见排序算法
PHP实现常见排序算法 //插入排序(一维数组) function insert_sort($arr){ $count = count($arr); for($i=1; $i $tmp = $arr[ ...
- Java常见排序算法
Java常见排序算法 转载于:https://www.cnblogs.com/hfultrastrong/p/7829889.html
最新文章
- Java多线程设计模式(4)线程池模式
- WordPress.com 开源,弃 PHP 改用 JavaScript
- HTML5 Placeholder实现input背景文字提示效果
- 大数据计算存储资源池_管家实践:轻松玩转大数据计算服务
- php 精度运算,PHP BC 库(任意精度数字运算) | 网游世界
- itext替换pdf中的中文
- Bruce的程序员语录
- php大写数字转换,php数字如何转换大写
- java 高并发商城库存订单处理,下单减库存,如何解决高并发减库存问题
- (3)tesorflow 计算模型复杂度
- 【tinyint和int区别】
- 卸载 ibus 使Ubuntu16.04任务栏与桌面图标消失
- H5加速、WebView加速、Hybrid 常见方案对比
- Word论文转化成静态文本
- CGAL 点云数据读取与保存
- 分享一个404页面(猴子动态SVG图)
- 我国经济最强的城市是哪个?北京、上海、还是深圳?
- ctfshow CMS系列writeup(web477-web479)
- 医院信息学项目-门诊医生工作站(1)
- 树莓派frp服务器和客户端配置教程
热门文章
- 原生js实现canvas气泡冒泡效果
- django之创建第6-1个项目-自定义过滤器
- Android---AlertDialog
- 监控工具—Prometheus—监控Java程序
- Zookeeper常用命令操作,javaAPI操作之Curator框架 API
- HTTP与HttpServlet
- 微信小程序的z-index在苹果ios无效
- 用django2.1开发公司官网(上)
- spring mvc静态资源访问的配置
- 初始化JQuery方法与(function(){})(para)匿名方法介绍