排序算法

排序就是将一组杂乱无章的数据按一定的规律(关键字)排列起来(或增或减)。在查找数据之前,我们可以通过排序操作对数据进行排序,以此方便数据查找。

排序的规律成为:关键字

关键字分为主关键字和次关键字

主关键字:通过主关键字进行排序,排序的结果是唯一的。常用的id

次关键字:通过次关键字进行排序的结果可能不是唯一的。姓名。性别等

稳定性:通过次关键字排序时,如果存在两条数据的次关键字的值相等,这两条数据经过算法排序后,依旧按照排序前的先后顺序,那么则称这个排序算法是稳定的。

衡量排序算法的标准:

1、所需要的平均比较次数

2、所需要的平均移动次数

3、所需要的平均辅助空间

内排序和外排序

内排序:实质在排序期间数据对象全部存放在内存的排序;这个过程是一个逐步扩大记录的有序序列长度的过程。数据记录序列,存在无序序列和有序序列两个区域。

外排序:是指在排序期间全部对象个数太多,不能同时存放在内存,必须根据排序过程的要求,不断地在内存和外村之间移动的排序。

排序的分类:基于不同的“扩大”有序序列长度的方法,内部排序方法可分为以下几个类别:

1、插入类(直接插入排序、折半插入排序、2——路插入排序、希尔排序)

2、交换类(冒泡排序、快速排序)

3、选择类(直接选择排序、锦标赛排序、堆排序)

4、归并类(通过“归并”两个或两个以上的记录有序序列子集,逐步增加记录有序序列的长度)

插入排序:每一步将待排序对象,按照其排序码(关键字)的大小,插入到已经排好序的有序序列里的适当位置。根据寻找插入点方式的不同,插入排序又可分为:

直接插入排序、折半插入排序、2——路插入排序、希尔排序。

交换排序:两两比较待排序对象的排序码(关键字),如果发生逆序,则交换之,知道所有对象都排好序为止。

选择排序:通过从无序序列中查找出排序码(关键字)最大值的数据记录或最小值的数据记录,将其按一定的方法进行一次移动到有序序列。

归并排序:主要是二路归并排序,通过“归并”两个或两个以上的记录有序序列子集,逐步增加记录有序序列的长度

原文地址:https://www.cnblogs.com/huanqiuxuexiji/p/9164748.html