排序算法系列

简介: 概述 概念 排序是计算机内经常进行的一种操作,其目的是将一组“无序”的记录序列调整为“有序”的记录序列。 排序分为内部排序和外部排序。 若整个排序过程不需要访问外存便能完成,则称此类排序问题为内部排序。

概述


概念
排序是计算机内经常进行的一种操作,其目的是将一组 “无序”的记录序列调整为 “有序”的记录序列。

排序分为内部排序和外部排序。

若整个排序过程不需要访问外存便能完成,则称此类排序问题为内部排序

反之,若参加排序的记录数量很大,整个序列的排序过程不可能在内存中完成,则称此类排序问题为外部排序

 

 

排序分类

如果按照策略来分类,大致可分为:交换排序、插入排序、选择排序、归并排序和基数排序。如 图-排序策略分类图 所示。

图-排序策略分类图

 

 

 

 

算法分析

下表给出各种排序的基本性能,具体分析请参看各排序的详解。

 
排序类别 排序方法 时间复杂度 空间复杂度 稳定性 复杂性
平均情况 最坏情况 最好情况
交换排序 冒泡排序 O(n2) O(n2) O(n) O(1) 稳定 简单
快速排序 O(nlog2n) O(n2) O(nlog2n) O(nlog2n) 不稳定 较复杂
插入排序 直接插入排序 O(n2) O(n2) O(n) O(1) 稳定 简单
希尔排序 O(nlog2n) O(n1.5)
O(1) 不稳定 较复杂
选择排序 简单选择排序 O(n2) O(n2) O(n2) O(1) 不稳定 简单
堆排序 O(nlog2n) O(nlog2n) O(nlog2n) O(1) 不稳定 较复杂
归并排序 归并排序 O(nlog2n) O(nlog2n) O(nlog2n) O(n) 稳定 较复杂
基数排序 基数排序 O(d(n+r)) O(d(n+r)) O(d(n+r)) O(n+r) 稳定 较复杂

 

 

 

系列文章

 

 

 

 

 
目录
相关文章
|
6月前
|
搜索推荐 算法 Python
排序算法1
排序算法1
|
6月前
|
搜索推荐 算法 Python
排序算法(2)
排序算法(2)
|
6月前
|
搜索推荐 算法 Python
其他常见的排序算法
其他常见的排序算法
|
7月前
|
搜索推荐 算法 数据处理
C++中的排序算法
C++中的排序算法
57 0
|
7月前
|
搜索推荐 C#
C#实现选择排序算法
C#实现选择排序算法
48 2
|
7月前
|
搜索推荐
直接选择排序算法
直接选择排序算法
45 0
|
搜索推荐 算法 Shell
排序算法
排序算法
41 1
|
算法 搜索推荐 Java
常见排序算法详解(1)
前言 排序是我们在日常生活和工作中常见的一种操作。在计算机科学中,排序算法就是将一串或一组数据按照特定的顺序进行排列的算法。这些顺序可能是数字的升序或降序,也可能是字母或字词的字母顺序等。我们将探讨几种不同的排序算法,包括他们的原理、优缺点以及代码实现。
138 0
|
机器学习/深度学习 存储 缓存
第 7 章 排序算法
第 7 章 排序算法
94 0
|
搜索推荐 程序员 C语言
常见的排序算法(上)
时间如流水,今天就到初阶数据结构最后一个知识章节了,常见的排序算法!在进入这期之前,程爱打篮球的程序猿想说一句,如果有不懂的地方可以反复观看我之前的内容,再还有不懂可以直接找我,帮你安排的妥妥的!
常见的排序算法(上)