五种内部排序算法性能比较——C语言

五种内部排序算法性能比较

1.直接插入排序算法
将一个待排序的记录插入到若干个已排好序的有序记录中的适当位置,从而得到一个新的、记录数增加1的有序数据序列,直到插入完成。在最开始,整个有序数据序列只有一个数据,当全部数据插入完毕后,整个数据序列有序,并且在最后一个数据插入有序数据序列之前,每一个数据所在位置都不一定是最终位置,只能够是相对最终位置。
2.简单选择排序
选择类排序的核心是“选择”,即每一趟排序都选择出最大(或最小)的记录,把它和整个数据序列中的最后一个(或者第一个)数据交换,这样最大(或最小)的记录到达其最终位置,如此循环,直到每一个数据都被选择一次和交换一次后,整个数据序列变为有序序列。
3.希尔排序
希尔排序又叫缩小增量排序,其本质还是插入排序,只不过是将几个待排序的序列按某种规则分成几个子序列,分别对这几个子序列进行直接插入排序。这个规则就是增量,前面讲到过,直接插入排序适用于序列基本有序的情况,希尔排序的每趟序列都会使整个序列更加有序,等整个序列有序了再来一趟直接插入排序,这样会使排序效率更高,这就是希尔排序的思想[7]。
4.归并排序
所谓归并就是将两个或者两个以上的有序序列合并为一个新的有序序列,归并类排序就是基于这种思想。二路归并就是每次将两个有序序列合并为一个有序序列[4]。
5.快速排序
快速排序是“交换”类的排序,其核心是“交换”,每一趟排序,都是通过一系列的交换动作完成的,让一个记录到达它的最终位置,一趟快速排序是以一个“枢轴”为中心[1],将序列分成两部分,枢轴的一边全是比它小(或者是小于等于)的,另一边全是比它大(或者是大于等于)的[2]。

本程序提供上述五种内部排序的性能比较
分别对交换次数,比较次数,移动次数,时长,时间复杂度进行性能比较。给出十万到百万级数据量的统计结果。以c语言控制台画出的表格形式呈现。
这里提供源码下载

猜你喜欢

转载自blog.csdn.net/baidu_38306313/article/details/81272648
今日推荐