一、插入类排序
插入类排序思想:在一个已经排好序的有序序列区内,对待排序的无序序列区中记录逐个进行处理,每一步将一个待排序的记录与同组那些已排好序的记录进行比较,然后插入到该有序序列区中,直到将所有待排记录全部插入为止
1、直接插入排序
2、折半插入排序
3、希尔排序
二、交换类排序
交换类排序思想:对待待排序记录的关键字进行两两比较,只要发现两个记录为逆序就进行交换,直到没有逆序的记录为止。如果要将整个记录序列调整为递增序列,那么关键字之间是递减关系即为逆序。
1、冒泡排序
2、快速排序
三、选择类排序
选择类排序思想:在第i趟的记录序列中选取关键字第i小的记录作为有序序列的第i个记录。
(该类算法的关键在于如何从剩余的记录中找到最小或最大的那个记录)
1、简单选择排序
2、树型选择排序
3、堆排序
四、归并类排序
归并类排序思想:首先将原始无序序列划分成两个子序列,然后分别对两个子序列进行排序最后再将有序序列进行合并。
(归并排序是一种基于分治法的排序。)
1、二路归并排序
2、自然归并排序
五、分配类排序
分配类排序算法思想:它是唯一一种不需要进行关键字之间比较的排序算法,但却要知道记录序列的一些其他信息。这种排序算法主要利用分配和收集两种基本操作。
1、多关键字排序(最低位优先LSD,最高位优先MSD)
2、链式基数排序
六、外部排序
1、置换选择排序
2、多路归并外排序