电脑
对C语言有一定的了解
word文档的内容: 一、实验目标: (1) 几种排序算法在平均情况下哪一个更快。 (2) 加深对时间复杂度概念的理解。 实验任务: (1)实现几种排序算法(selectionsort, insertionsort,bottomupsort,quicksort, 堆排序)。对于快速分类,SPLIT中的划分元素采用三者A(low),A(high),A((low+high)/2)中其值居中者。 (2)随机产生20组数据(比如n=5000i,1≤i≤20)。数据均属于范围(0,105)内的整数。对于同一组数据,运行以上几种排序算法,并记录各自的运行时间(以毫秒为单位)。 (3)根据实验数据及其结果来比较这几种分类算法的平均时间和比较次数,并得出结论。 实验设备及环境: PC;C/C++等编程语言。 二、实验主要步骤: (1) 明确实验目标和具体任务; (2) 理解实验所涉及的几个分类算法; (3) 编写程序实现上述分类算法; (4) 设计实验数据并运行程序、记录运行的结果; (5) 根据实验数据及其结果得出结论; (6) 实验后的心得体会。
三、程序所用到的排序方法(' 1、直接插入排序\n'); printf(' 2、折半插入排序\n'); printf(' 3、起泡排序\n'); printf(' 4、快速排序\n'); printf(' 5、选择排序\n'); printf(' 6、堆排序\n'); printf(' 7、基数排序\n'); printf(' 8、退出该系统\n');
四、源代码#include 'stdio.h'#include 'stdlib.h'#include 'time.h'//计时 printf(' 本次排序结束。\n');printf(' ___________________________________________________________________\n'); printf(' 继续本系统吗?\n\n'); printf(' 以下是各个排序算法的代号:\n'); printf(' 1、直接插入排序\n'); printf(' 2、折半插入排序\n'); printf(' 3、起泡排序\n'); printf(' 4、快速排序\n'); printf(' 5、选择排序\n'); printf(' 6、堆排序\n'); printf(' 7、基数排序\n'); printf(' 8、退出该系统\n'); printf('\n请请输入1-7选择排序方式,或者选择8退出系统:');scanf('%d',&choice);while(choice<1||choice>8){printf('输入方式有误。\n请输入1-7选择排序方式,或者选择8退出系统');scanf('%d',&choice);}}}
五、实验结果分析及结论: 实验结果表明,选择排序用时普遍比其它算法大,自顶向上合并排序时间普遍较少,尤其是当数据量变得很大的时候,选择排序的速度变得远远不及自顶向上合并排序算法,大出好几百倍.另外,插入排序在当数据量变大时花费的时间也变得很长.快速排序和堆排序处于不确定的情况,不稳定性表现比较明显.但是还是一种比较快的C语言算法.