📄 main.cpp
字号:
#include <iostream>
#include <iomanip>
#include <fstream>
#include <ctime>
#include <cstdlib>
using namespace std;
const int NUM = 10000;
const int N = 5;
#include "bubblesort.cpp"
#include "insertsort.cpp"
#include "selectsort.cpp"
#include "quicksort.cpp"
#include "shellsort.cpp"
#include "heapsort.cpp"
#include "Use_MP.cpp"
#include "Use_CR.cpp"
#include "Use_XZ.cpp"
#include "Use_KS.cpp"
#include "Use_SL.cpp"
#include "Use_D.cpp"
#include "produce.cpp"
#include "IsSame.cpp"
int main()
{
int opt;
int i;
double time_mp[N], time_cr[N], time_xz[N], time_ks[N], time_sl[N], time_d[N];
int contrast_mp[N], contrast_cr[N], contrast_xz[N], contrast_ks[N], contrast_sl[N], contrast_d[N];
int move_mp[N], move_cr[N], move_xz[N], move_ks[N], move_sl[N], move_d[N];
double timeT_mp, timeT_cr, timeT_xz, timeT_ks, timeT_sl, timeT_d;
long contrastT_mp, contrastT_cr, contrastT_xz, contrastT_ks, contrastT_sl, contrastT_d;
long moveT_mp, moveT_cr, moveT_xz, moveT_ks, moveT_sl, moveT_d;
timeT_mp = 0;
timeT_cr = 0;
timeT_xz = 0;
timeT_ks = 0;
timeT_sl = 0;
timeT_d = 0;
contrastT_mp = 0;
contrastT_cr = 0;
contrastT_xz = 0;
contrastT_ks = 0;
contrastT_sl = 0;
contrastT_d = 0;
moveT_mp = 0;
moveT_cr = 0;
moveT_xz = 0;
moveT_ks = 0;
moveT_sl = 0;
moveT_d = 0;
cout<<"#########################################################"<<endl;
cout<<"# 欢迎使用排序比较测试系统 #"<<endl;
cout<<"#########################################################"<<endl;
cout<<" 本系统使用10000个元素的数组进行排序,并输出排序时间及"<<endl;
cout<<"比较次数和移动次数。每次进行选择,只是输出该种排序的结果"<<endl;
cout<<"总共进行5组比较,最后进行综合比较。"<<endl;
for(i=0;i<N;i++)
{
produce("before.txt");
cout<<"第"<<i+1<<"组数据比较"<<endl;
cout<<" 选择你要测试的排序方法:"<<endl;
cout<<" 1.冒泡排序;"<<endl;
cout<<" 2.插入排序;"<<endl;
cout<<" 3.选择排序;"<<endl;
cout<<" 4.快速排序;"<<endl;
cout<<" 5.希尔排序;"<<endl;
cout<<" 6.堆排序;"<<endl;
cout<<" 其他.下一次选择。";
cout<<" ";
cin>>opt;
cout<<"排序类型 排序时间 比较次数 移动次数"<<endl;
switch(opt)
{
case 1:
Use_MP(time_mp[i],contrast_mp[i],move_mp[i]);
timeT_mp += time_mp[i];
contrastT_mp += contrast_mp[i];
moveT_mp += move_mp[i];
cout<<"冒泡排序"<<setw(9)<<time_mp[i]<<setw(9)<<contrast_mp[i]<<setw(9)<<move_mp[i]<<endl;
break;
case 2:
Use_CR(time_cr[i],contrast_cr[i],move_cr[i]);
timeT_cr += time_cr[i];
contrastT_cr += contrast_cr[i];
moveT_cr += move_cr[i];
cout<<"插入排序"<<setw(9)<<time_cr[i]<<setw(9)<<contrast_cr[i]<<setw(9)<<move_cr[i]<<endl;
break;
case 3:
Use_XZ(time_xz[i],contrast_xz[i],move_xz[i]);
timeT_xz += time_xz[i];
contrastT_xz += contrast_xz[i];
moveT_xz += move_xz[i];
cout<<"选择排序"<<setw(9)<<time_xz[i]<<setw(9)<<contrast_xz[i]<<setw(9)<<move_xz[i]<<endl;
break;
case 4:
Use_KS(time_ks[i],contrast_ks[i],move_ks[i]);
timeT_ks += time_ks[i];
contrastT_ks += contrast_ks[i];
moveT_ks += move_ks[i];
cout<<"快速排序"<<setw(9)<<time_ks[i]<<setw(9)<<contrast_ks[i]<<setw(9)<<move_ks[i]<<endl;
break;
case 5:
Use_SL(time_sl[i],contrast_sl[i],move_sl[i]);
timeT_sl += time_sl[i];
contrastT_sl += contrast_sl[i];
moveT_sl += move_sl[i];
cout<<"希尔排序"<<setw(9)<<time_sl[i]<<setw(9)<<contrast_sl[i]<<setw(9)<<move_sl[i]<<endl;
break;
case 6:
Use_D(time_d[i],contrast_d[i],move_d[i]);
timeT_d += time_d[i];
contrastT_d += contrast_d[i];
moveT_d += move_d[i];
cout<<" 堆排序"<<setw(9)<<time_d[i]<<setw(9)<<contrast_d[i]<<setw(9)<<move_d[i]<<endl;
break;
default:
cout<<"--------"<<setw(9)<<"------"<<setw(9)<<"------"<<setw(9)<<"------"<<endl;
break;
}
if(opt!=1)
{
Use_MP(time_mp[i],contrast_mp[i],move_mp[i]);
timeT_mp += time_mp[i];
contrastT_mp += contrast_mp[i];
moveT_mp += move_mp[i];
}
if(opt!=2)
{
Use_CR(time_cr[i],contrast_cr[i],move_cr[i]);
timeT_cr += time_cr[i];
contrastT_cr += contrast_cr[i];
moveT_cr += move_cr[i];
}
if(opt!=3)
{
Use_XZ(time_xz[i],contrast_xz[i],move_xz[i]);
timeT_xz += time_xz[i];
contrastT_xz += contrast_xz[i];
moveT_xz += move_xz[i];
}
if(opt!=4)
{
Use_KS(time_ks[i],contrast_ks[i],move_ks[i]);
timeT_ks += time_ks[i];
contrastT_ks += contrast_ks[i];
moveT_ks += move_ks[i];
}
if(opt!=5)
{
Use_SL(time_sl[i],contrast_sl[i],move_sl[i]);
timeT_sl += time_sl[i];
contrastT_sl += contrast_sl[i];
moveT_sl += move_sl[i];
}
if(opt!=6)
{
Use_D(time_d[i],contrast_d[i],move_d[i]);
timeT_d += time_d[i];
contrastT_d += contrast_d[i];
moveT_d += move_d[i];
}
//if(IsSame("mp_result.txt","cr_result.txt")&&IsSame("mp_result.txt","xz_result.txt")&&IsSame("mp_result.txt","ks_result.txt")&&IsSame("mp_result.txt","sl_result.txt")&&IsSame("mp_result.txt","d_result.txt"))
//cout<<"OK! 所有这些排序的结果一致!!!"<<endl; //该语句可以对各种排序的结果进行比较验证
}
timeT_mp /= N;
timeT_cr /= N;
timeT_xz /= N;
timeT_ks /= N;
timeT_sl /= N;
timeT_d /= N;
contrastT_mp /= N;
contrastT_cr /= N;
contrastT_xz /= N;
contrastT_ks /= N;
contrastT_sl /= N;
contrastT_d /= N;
moveT_mp /= N;
moveT_cr /= N;
moveT_xz /= N;
moveT_ks /= N;
moveT_sl /= N;
moveT_d /= N;
cout<<"这"<<N<<"组数据的平均情况"<<endl;
cout<<"排序类型 排序时间 比较次数 移动次数"<<endl;
cout<<"冒泡排序"<<setw(9)<<timeT_mp<<setw(9)<<contrastT_mp<<setw(9)<<moveT_mp<<endl;
cout<<"插入排序"<<setw(9)<<timeT_cr<<setw(9)<<contrastT_cr<<setw(9)<<moveT_cr<<endl;
cout<<"选择排序"<<setw(9)<<timeT_xz<<setw(9)<<contrastT_xz<<setw(9)<<moveT_xz<<endl;
cout<<"快速排序"<<setw(9)<<timeT_ks<<setw(9)<<contrastT_ks<<setw(9)<<moveT_ks<<endl;
cout<<"希尔排序"<<setw(9)<<timeT_sl<<setw(9)<<contrastT_sl<<setw(9)<<moveT_sl<<endl;
cout<<" 堆排序"<<setw(9)<<timeT_d<<setw(9)<<contrastT_d<<setw(9)<<moveT_d<<endl;
getchar();
getchar();
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -