排序算法课程设计.doc
文本预览下载声明
排序算法课程设计
专 业
班 级
学 号
姓 名
指导老师
一:课程设计的目的
掌握各种排序的基本思想
掌握各种排序的算法实现
掌握各种排序的算法优劣分析花费的时间计算
掌握各种排序算法所适用的不同场合。
二:课程设计的内容
(1)冒泡、直插、选择、快速、希尔、归并、堆排序算法进行比较;
(2)待排序的元素的关键字为整数。其中的数据用伪随机产生程序产生(如10000个,1000个),再使用各种算法对其进行排序,记录其排序时间,再汇总比较;
(3)将每次测试所用的时间,用条形图进行表示,以便比较各种排序的优劣。
三:课程设计的实现
直接插入排序
#include iostream.h
typedef int keytype;
struct datatype
{
keytype key;
};
/* int rand(void);
void srand(unsigned int seed );
*/
#includestdlib.h
#includestdio.h
#includetime.h
#includewindows.h
void InsertSort (datatype a[], int n)
//用直接插入法对a[0]--a[n-1]排序
{
int i, j;
datatype temp;
for(i=0; in-1; i++)
{
temp = a[i+1];
j = i;
while(j -1 temp.key = a[j].key)
{
a[j+1] = a[j];
j--;
}
a[j+1] = temp;
}
}
void main()
{
/*srand((unsigned)time(NULL));// 随机种子 */
/*time_t t;
srand((unsigned)time(t));*/
time_t t1,t2;
srand((unsigned)GetCurrentTime());
datatype num[10000];
t1=GetCurrentTime();
for(int i=0;i10000;i++)
{
num[i].key=rand();
}
int n=10000;
InsertSort(num,n);
for(int j=0;j10000;j++)
coutnum[j].keyendl;
t2=GetCurrentTime();
coutThe t1 time is:t1The t2 time is:t2 t2-t1:t2-t1endl;
getchar();
}
(2)希尔排序
#include iostream.h
/* int rand(void);
void srand(unsigned int seed );
*/
#includestdlib.h
#includestdio.h
#includetime.h
#includewindows.h
typedef int keytype;
struct datatype
{
keytype key;
};
void ShellSort (datatype a[], int n, int d[], int numOfD)
//用希尔排序法对记录a[0]--a[n-1]排序
//各组内采用直接插入法排序
{
int i, j, k, m, span;
datatype temp;
for(m = 0; m numOfD; m++)
{
span = d[m];
for(k = 0; k span; k++)
{
for(i = k; i n-span; i = i+span)
{
temp = a[i+span];
j = i;
while(j -1 temp.key = a[j].key)
{
a[j+span] = a[j];
j = j-span;
}
a[j+span] = temp;
}
}
}
}
void main()
{
/*srand((unsigned)time(NULL));// 随机种子 */
/*time_t t;
srand((unsigned)time(t));*/
time_t t1,t2;
srand
显示全部