|
发表于 2009-11-5 01:09:47
|
显示全部楼层
IP:江苏扬州
程序代码:
#include "stdafx.h"
#include <iostream>
#include <ctime>
#include <fstream>
using namespace std;
class Timer
{ clock_t start_time;
public:
Timer(){start_time=clock();}
void elaspe()
/*计算时间*/
{
clock_t end_time=clock();
cout<<"It takes "<<(double)(end_time-start_time)/(double)CLK_TCK<<"seconds\n";
}
/*时间归零*/
void reset(){start_time=clock();}
};
#define maxSortNum 4 /*定义排序算法的个数(种类)*/
class CCompositor
{ int *a;
public:
CCompositor(){a=NULL;}
~CCompositor(){delete []a;}
void FileMenu();
void Initional(int i);
void GetFile(ifstream&is,int size);
void doCompose(int n);
void sort_1();
void sort_2();
void sort_3();
void sort_4();
};
typedef void (CCompositor::*sort)();
sort g_x[] = {CCompositor::sort_1, CCompositor::sort_2, CCompositor::sort_3, CCompositor::sort_4};
struct SortStruct
{ int m_iIndex; //索引
char* m_pChoice; //文件类型
char* m_pFile; //文件路径
int m_iInfoSize; //文件大小
};
SortStruct sortArr[]={
1, " 1. 数据长度20个, 顺序\n", "order20.txt", 20,
2, " 2. 数据长度200个, 顺序\n", "order200.txt", 200,
3, " 3. 数据长度2000个, 顺序\n", "order2000.txt", 2000,
4, " 4. 数据长度20个, 逆序\n", "unOrder20.txt", 20,
5, " 5. 数据长度200个, 逆序\n", "unOrder200.txt", 200,
6, " 6. 数据长度2000个, 逆序\n", "unOrder2000.txt", 2000,
7, " 7. 数据长度20个, 随机\n", "noOrder20.txt", 20,
8, " 8. 数据长度200个, 随机\n", "noOrder200.txt", 200,
9, " 9. 数据长度2000个, 随机\n", "noOrder2000.txt", 2000,
10," 10.数据长度20个, 部分排序\n","partlyOrder20.txt", 20,
11," 11.数据长度200个, 部分排序\n","partlyOrder200.txt", 200,
12," 12.数据长度200个, 部分排序\n","partlyOrder2000.txt", 2000,
};
void CCompositor::sort_1()
{ //增加代码,完成你的算法
}
void CCompositor::sort_2()
{ //增加代码,完成你的算法
}
void CCompositor::sort_3()
{ //增加代码,完成你的算法
}
void CCompositor::sort_4()
{ //增加代码,完成你的算法
}
void CCompositor::GetFile(ifstream&is,int size)
{ //if(!is)exit(1);
delete a;a=NULL;
a=new int[size];
for(int i=0;i<size;i++)
is>>a[i];
}
void CCompositor::FileMenu()
/*列出所有不同类型的数据*/
{ cout<<" 算法比较数据文件目录\n";
cout<<" ——————————————"<<endl;
for (int i=0;i<sizeof(sortArr)/sizeof(SortStruct);i++)
{
cout<<sortArr[i].m_pChoice;
}
cout<<"请选择...";
} void CCompositor::Initional(int i)
/*根据不同的文件数据进行数据加载*/
{ ifstream is;
is.open(sortArr[i-1].m_pFile);
GetFile(is,sortArr[i-1].m_iInfoSize);
is.close();
}
int _tmain(int argc, _TCHAR* argv[])
{ CCompositor compose;
compose.FileMenu();
int choice;cin>>choice;
compose.Initional(choice);
Timer time;
for(int j=0;j<sizeof(g_x)/4;j++)
{
g_x[j];
time.elaspe();
time.reset();
}
return 0;
}
不知道这个有用没
效率比较可以用模板的。
参与的数据也应该是多种 |
|