西华大学理学院课程设计说明书
printf(\请选择你要使用的排序方法:\\n\
printf(\快速排序;\\n\\t\\t2.起泡排序;\\n \\t\\t3.直接插入排序;\\n \\t\\t4.归并排
序;\\n\ }
//快速选择排序
void quick_select_sort(int a[]) {
32
printf(\简单选择排序;\\n\\t\\t6.堆排序;\\n\\t\\t7.退出.\\n\printf(\
int i; Sqlist L;
//声明结构体; //初始化长度为0;
//快速选择排序结果保存文件;
//初始化快速选择排序结构链表的数据;
L.length = 0;
ofstream output(\快速排序.txt\for (i = 1; i < M + 1; i++) { }
start = clock(); Qsort(L, 1, M);
L.r[i].key = a[i]; L.length++;
//将待排序的数组数据存入排序算法的结构体中;
//计算排序算法结构的长度length;
//开始算法执行时间计时; //调用快速排序算法进行排序;
finish = clock(); //终止算法执行时间计时; printf(\显示快速排序结果:\\n\
for (i = 1; i < M + 1; i++) //每个元素占6个字符,以空格隔开,每100个元素换行保存排序 { }
for (i = 1; i < M + 1; i++) //每个元素占6个字符,以空格隔开,每10个元素换行输出排序
output << setw(6) << L.r[i].key << \if (i % 100 == 0)
printf(\
排序综合
{ }
printf(\快速排序完成,结果已保存!\\n\
cout << \快速排序消耗时间为: \秒\//输出
cout << setw(6) << L.r[i].key << \if (i % 10 == 0)
printf(\
快速算法耗时(s); }
//冒泡排序
void bubble_sort(int a[]) {
int i,j,t;
//定义整形数据t
//建立冒泡排序结果保存文件;
ofstream output(\冒泡排序.txt\start = clock();
//开始起泡排序算法执行时间计时
//执行起泡排序算法
for (j = 1; j < M + 1; j++) { }
for (int i = 1; i
t = a[i]; a[i] = a[i + 1]; a[i + 1] = t;
finish = clock(); //终止冒泡排序算法执行时间计时 printf(\显示冒泡排序结果:\\n\
for (i = 1; i < M + 1; i++)//每个元素占6个字符,以空格隔开,每100个元素换行保存排序后
{
output << setw(6) << a[i] << \
33
西华大学理学院课程设计说明书
}
if (i % 100 == 0)
printf(\
for (i = 1; i < M + 1; i++)//每个元素占6个字符,以空格隔开,每10个元素换行输出排序后数组;
{ }
printf(\冒泡排序完成,结果已保存!\\n\
cout << \冒泡排序消耗时间为: \秒\//输出
cout << setw(6) << a[i] << \if (i % 10 == 0)
printf(\
起泡排序算法耗时(s); }
//插入排序
void insert_sort(int a[]) {
34
//system(\
int i, j; Sqlist L;
//声明结构体;
//初始化结构体长度为0;
//建立直接插入排序结果保存文件; //初始化直接插入排序结构体中的数据;
L.length = 0;
ofstream output(\直接插入排序.txt\for (i = 1; i < M + 1; i++) { }
start = clock();
L.r[i].key = a[i]; L.length++;
//开始直接插入排序算法执行时间计时;
//执行插入排序算法;
for (i = 2; i <= L.length; ++i) {
if (L.r[i].key < L.r[i - 1].key)
排序综合
}
finish = clock(); //结束直接插入排序算法执行时间计时;
printf( \显示直接插入排序的结果:\\n\每个元素占6个字
{ }
L.r[0] = L.r[i]; L.r[i] = L.r[i - 1];
for (j = i - 2; L.r[0].key < L.r[j].key; --j)
L.r[j + 1] = L.r[j];
L.r[j + 1] = L.r[0];
符,以空格隔开,每100个元素换行保存排序后数组;
{ }
output << setw(6) << L.r[i].key << \if (i % 100 == 0)
printf(\
for (i = 1; i < M + 1; i++)//每个元素占6个字符,以空格隔开,每10个元素换行输出排序后数组;
{ }
printf(\直接插入排序完成,结果已保存!\\n\
cout << \直接插入排序消耗时间为 \秒\
//
cout << setw(6) << L.r[i].key << \if (i % 10 == 0)
printf(\
输出直接排序算法耗时(s); }
//归并排序
void merge_sort(int a[]) {
35
//system(\
西华大学理学院课程设计说明书
int i; Sqlist L;
//声明结构体; //初始化结构体长度;
//建立归并排序算法结果保存文件;
//初始化排序结构体中的数据;
L.length = 0;
ofstream output(\归并排序.txt\for (i = 1; i < M + 1; i++) { }
start = clock();
L.r[i].key = a[i]; L.length++;
//开始归并排序算法执行时间计时;
//调用归并排序算法;
MSort(L.r, L.r, 1, L.length);
finish = clock(); //结束归并排序算法执行时间计时; printf(\显示归并排序结果:\\n\
for (i = 1; i < M + 1; i++) //每个元素占6个字符,以空格隔开,每100个元素换行保存排序
后数组;
{ }
for (i = 1; i < M + 1; i++) //每个元素占6个字符,以空格隔开,每10个元素换行输出排序
output << setw(6) << L.r[i].key << \if (i % 100 == 0)
printf(\
后数组;
{ }
printf(\归并排序完成,结果已保存!\\n\
cout << \归并排序消耗时间为: \秒\//输出
cout << setw(6) << L.r[i].key << \if (i % 10 == 0)
printf(\
归并排序算法耗时(s);
36