算法设计与分析 第2次作业

各种排序算法的实现与分析

请用任意语言(C/C++/Java/Python等), 实现选择排序、插入排序、快速排序、归并排序。

选择排序:

1

插入排序:

1

快速排序:

1

归并排序:

1

问题:

  1. 生成不同规模、不同分布的测试数据, 对比测试上述4种代码的运行表现。
    (要求数据规模至少包括1万、10万、100万, 分布要求必须包含一定范围内的随机数据。下表仅写排序运行时间, 不要包括读入数据的时间。)

答: (至少包含以下内容, 推荐对是否有重复元素附加测试)

选择排序 插入排序 快速排序 归并排序
1万正序
1万逆序
1万随机
10万正序
10万逆序
10万随机
100万正序
100万逆序
100万随机

附: 各规模随机数的说明

1万随机: (应至少包括范围, 是否有重复元素, 分布: 均匀分布即可)

10万随机: (应至少包括范围, 是否有重复元素, 分布: 均匀分布即可)

100万随机: (应至少包括范围, 是否有重复元素, 分布: 均匀分布即可)

生成随机数据的方法: (以10万规模随机数为例)

1

  1. 实际的排序问题输入, 元素可能有重复, 如果输入中有较多重复元素, 如何改进快速排序, 使划分效率更高?请写出改进后的核心代码或算法

答: