📄 sortmain.cpp
字号:
#include <stdio.h>
#include <iostream.h>
#include <math.h>
#include <time.h>
#include <conio.h>
#include "sort.cpp"
//对各种算法进行计时
//num: 要进行排序的元素个数
//bRandom: 是否为随机数,true为随机数,false为有序数。
//bStepUp: 是否为正序,true为正序,false为逆序。
void TimeGame(int num, bool bRandom, bool bStepUp)
{
int i;
int *ia1, *ia2;
clock_t Start, Finish;
double Duration;
sort<int> s(num); // create sort object
ia1 = new int[num+1];
ia2 = new int[num+1];
if (bRandom)
{
for (i=1; i<num+1; i++)
ia1[i] = ia2[i] = rand();
}
else
{
if (bStepUp)
{
for (i=1; i<=num; i++)
ia1[i] = ia2[i] = i;
}
else
{
int tmp = num;
for (i=1; i<=num; i++)
ia1[i] = ia2[i] = tmp--;
}
}
cout << "size: " << num << endl;
Start = clock();
s.Insertion(ia1);
Finish = clock();
Duration = (double)(Finish - Start) / CLOCKS_PER_SEC;
printf("Insert times: %.3f seconds\n", Duration );
for (i=1; i<num+1; i++)
ia1[i] = ia2[i];
Start = clock();
s.Shell(ia1);
Finish = clock();
Duration = (double)(Finish - Start) / CLOCKS_PER_SEC;
printf("Shell times: %.3f seconds\n", Duration );
for (i=1; i<num+1; i++)
ia1[i] = ia2[i];
Start = clock();
s.Selection(ia1);
Finish = clock();
Duration = (double)(Finish - Start) / CLOCKS_PER_SEC;
printf("Select times: %.3f seconds\n", Duration);
for (i=1; i<num+1; i++)
ia1[i] = ia2[i];
Start = clock();
s.Bubble(ia1);
Finish = clock();
Duration = (double)(Finish - Start) / CLOCKS_PER_SEC;
printf("Bubble times: %.3f seconds\n", Duration );
for (i=1; i<num+1; i++)
ia1[i] = ia2[i];
Start = clock();
s.Quick(ia1, 1, num);
Finish = clock();
Duration = (double)(Finish - Start) / CLOCKS_PER_SEC;
printf("Quick times: %.3f seconds\n", Duration );
for (i=1; i<num+1; i++)
ia1[i] = ia2[i];
Start = clock();
s.Heap(ia1);
Finish = clock();
Duration = (double)(Finish - Start) / CLOCKS_PER_SEC;
printf("Heap times: %.3f seconds\n", Duration );
for (i=1; i<num+1; i++)
ia1[i] = ia2[i];
Start = clock();
s.Merge(ia1);
Finish = clock();
Duration = (double)(Finish - Start) / CLOCKS_PER_SEC;
printf("Merge times: %.3f seconds\n", Duration );
for (i=1; i<num+1; i++)
ia1[i] = ia2[i];
Start = clock();
s.Radix(ia1);
Finish = clock();
Duration = (double)(Finish - Start) / CLOCKS_PER_SEC;
printf("Radix times: %.3f seconds\n", Duration );
delete [] ia1;
delete [] ia2;
}
void main()
{
char choice;
int i, Num;
cout<<endl;
cout<<" 数据结构大作业 "<<endl<<endl;
cout<<" 姓名:胡海鑫 年级:2005年春计算机专业(专升本) 教学点:华工 学号:200504602011030"<<endl;
cout<<" email:konyhu@163.com 电话:13416388624"<<endl;
cout<<endl;
int chioce;
while(1)
{
cout<<" ***************排序算法***************\n操作选择:\n";
cout<<" 1:直接插入排序\n";
cout<<" 2:直接插入排序改进1\n";
cout<<" 3:冒泡排序\n";
cout<<" 4:冒泡排序改进1\n";
cout<<" 5:冒泡排序改进2\n";
cout<<" 6:直接选择排序\n";
cout<<" 7:Shell排序\n";
cout<<" 8:Shell排序改进1\n";
cout<<" 9:快速排序\n";
cout<<" 10:快速排序改进1\n";
cout<<" 11:归并排序\n";
cout<<" 12:归并排序改进1\n";
cout<<" 13:堆排序\n";
cout<<" 14:堆排序改进1\n";
cout<<" 0:退出\n";
cout<<"请键入:";
cin>>chioce;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -