软考系列——排序算法盘点
来源:互联网 发布:新网域名转移到万网 编辑:程序博客网 时间:2024/06/05 23:44
所谓排序,就是按照关键字递增或递减次序排列起来。本文将会从四个方面来分析各个排序方法:逻辑、时间复杂度、稳定性评价、代码与图。开始之前,要知道以下三个定义。
时间复杂度:预计算法的运算时间。
稳定的:若存在多个关键字相同记录,排序后,相同关键字的记录之间的相对次序保持不变,则称其为稳定的。
不稳定的:若具有相同关键字的记录之间的相对次序发生变化,则称其为不稳定的。
下面是一张算法的分类图,本文会按照此顺序一一讲解。
1.插入排序
1.1.直接插入
基本思想:
依次将每个记录插入到一个已排好的有序表中去,从而得到一个新的、记录数增加1的有序表。其中有i个记录,记录R[0]有两个作用:一是防止丢失指针指向的值,二是防止越界,不用判断循环条件。
时间复杂度:
最好的情况:正序有序,这样只需要比较N次,不需要移动,所以时间复杂度为O(n)
最坏的情况:逆序有序,这样每一个数需要比较N次,一共有N个元素,所以时间复杂度为O(n2)
平均情况:O(n2)
稳定性:
是稳定的。直接插入排序是一个有序表和一个无序表,如果A和B是两个相同的数字,那么当A和B进行比较的时候,直接插入到A的后边,没有必要去移动位置,所以是稳定的。
1.2.Shell排序
2.交换排序
2.1.快速排序
2.2.冒泡排序
基本思想:采用从最后一个数据依次向前比较,找出最小的一个来。每次都是和相邻的交换位置。
3.选择排序
3.1.直接选择
基本思想:第一次从R[0]~R[n-1]中选取最小值,与R[0]交换,第二次从R[1]~R[n-1]中选取最小值,与R[1]交换,....,第i次从R[i-1]~R[n-1]中选取最小值,与R[i-1]交换,.....,第n-1次从R[n-2]~R[n-1]中选取最小值,与R[n-2]交换,总共通过n-1次,得到一个按排序码从小到大排列的有序序列
3.2.堆排序
4.归并
4.1.二路归并
5.基数
5.1.基数排序
6.总结
- 软考系列——排序算法盘点
- 软考系列——求最优算法盘点
- 【软考】——排序算法
- 软考——算法及常用排序算法总结
- 【软考】——排序
- 【软考】-算法- 快速排序
- 【三】软考—算法
- 软考之排序算法(一)——插入排序
- 软考之排序算法(二)——选择排序
- 软考之排序算法(三)——交换排序
- 软考之排序算法(四)——归并排序、基数排序
- 软考二进宫-排序算法-交换排序
- 软考系列2——技术
- 算法系列—堆排序
- 【算法系列】—选择排序
- 【算法系列】—冒泡排序
- 【算法系列】—插入排序
- 排序算法系列——希尔排序
- cf B. Kolya and Tanya (快速幂_注意取模)
- 为PopupWindow提供builder,绿化activity或fragment代码
- 程序运行时遵循的UIApplicationDelegate协议
- Linux系统参数(待更新)
- AS3.0 中的 变量回收机制
- 软考系列——排序算法盘点
- Java三星题之显示日期
- UVa 10881.Piotr's Ants【RuijiaLiu随书练习】【10月7】
- 05-javascript基础回顾
- javac与java命令在窗口编译java文件的操作和作用
- Android实现数据存储技术
- hdu 3065 病毒侵袭持续中 trie
- 互联网黑市:残暴的DDoS攻击
- PowerShell 调用系统 DLL 中的函数,如何使用返回参数中的值