排序是程序开发中一种非常常见的操作,对一组任意的数据元素(或记录)经过排序操作后,就可以把他们变成一组按关键字排序的有序序列。
假设含有n个记录的序列为{R1,R2,…,Rn},其相应的关键字序列为{K1,K2,…,Kn}。将这些记录重新排序为{Ri1,Ri2,…,Rin},使得相应的关键字值满足条件 Ki1≤Ki2≤…≤Kin,这样的一种操作称为排序。
一旦将一组杂乱无章的记录重排成一组有序记录,接下来就能快速从这组记录中找到目标记录。因此通常来说,排序的目的是快速查找。
对于一个排序算法来说,一般从如下3个方面来衡量算法的优劣。
- 时间复杂度:它主要是分析关键字的比较次数和记录的移动次数。
- 空间复杂度:分析排序算法中需要多少辅助内存。
- 稳定性:若两个记录A和B的关键字值相等,但排序后A、B的先后次序保持不变,则称这种排序算法是稳定的;反之,就是不稳定的。
内部排序的分类
- 选择排序(直接选择排序、堆排序)
- 交换排序(冒泡排序、快速排序)
- 插入排序(直接插入排序、折半插入 排序、Shell排序)
- 归并排序
- 桶式排序。
- 基数排序
![](https://img.haomeiwen.com/i4259109/7b84f9d2d4922436.png)
网友评论