排序算法
1. 介绍
排序算法是将一串数据按照某种特定排序方式(规则)进行排序的算法。分为内部排序和外部排序。
内部排序:指排序数据存储在内存中,依照依照某种排序方式(规则)进行排序。内部排序不适合太大的数据。内部排序的八中排序算法:冒泡排序、选择排序、插入排序、希尔排序、堆排序、归并排序、快速排序、基数排序。排序算法输出必须遵寻以下原则:
- 输出结果为递增序列(递增是针对所需的排序顺序而言)
- 输出结果是原输入的一种排列、或是重组
外部排序是指大文件的排序,即待排序的数据存储在外部存储器中(硬盘),待排序的文件无法一次写入内存中,需要在内存和外部存储器之间进行一次或者多次的数据交互,以完成整个文件的排序。
2. 分析
-
冒泡排序 -- 时间复杂度 :O(n2)
冒泡排序算法示意图 Bubble sort animation sort-0.1
冒泡排序算法的运作如下:
- 比较相邻的元素。如果第一个比第二个大,就交换他们两个。
- 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。这步做完后,最后的元素会是最大的数。
- 针对所有的元素重复以上的步骤,除了最后一个。
- 持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。
-
选择排序 -- 时间复杂度 :O(n2)
选择排序算法示意图 Bubble sort animation sort-0.2
选择排序算法的运作如下:
- 在未排序序列中找到最小(大)元素,存放到排序序列的起始位置。
- 再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。
- 以此类推,直到所有元素均排序完毕
插入排序 -- 时间复杂度 :O(n2)
希尔排序 -- 时间复杂度 :O(n1.25)
堆排序 -- 时间复杂度 :O(n log n)
归并排序 -- 时间复杂度 :O(n log n)
快速排序 -- 时间复杂度 :O(n log n)
基数排序 -- 时间复杂度 :O(n)