📄 sortcompare.cpp
字号:
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
#include <sys/timeb.h>
#include <map>
#include <algorithm>
#pragma warning(disable:4786)
#define BEFORESORTFILE "bfile.txt"
#define AFTERSORTFILE "afile.txt"
#define BUFFERSIZE 128
using namespace std;
void StlSort(int *pNum,long Num);
void InsertSort(int *pNum,long Num);
void WriteToFile(char* FileName,int *pNum,long Num);
int main(int argc,char *argv[])
{
long RandNum; //产生的随机数个数
int *pNum; //随机数存储指针
RandNum=atol(argv[1]);
if(RandNum==0)
{
printf("输入有错误\n");
return 0;
}
pNum=(int *)malloc((RandNum+1)*sizeof(int));
srand((unsigned)time(NULL));
int i;
for(i=1;i<=RandNum;i++)
{
pNum[i]=rand();
}
//排序前结果写入文件
WriteToFile(BEFORESORTFILE,pNum,RandNum);
//记录排序时间
timeb StartTime,EndTime;
ftime(&StartTime);
InsertSort(pNum,RandNum);
ftime(&EndTime);
printf("耗时:%d(毫秒)",EndTime.time*1000-StartTime.time*1000+EndTime.millitm-StartTime.millitm);
//排序后结果写入文件
WriteToFile(AFTERSORTFILE,pNum,RandNum);
return 1;
}
void InsertSort(int *pNum,long Num)
{
for(int i=2;i<=Num;i++)
if(pNum[i]<pNum[i-1])
{
pNum[0]=pNum[i];
pNum[i]=pNum[i-1];
for(int j=i-2;pNum[0]<pNum[j];--j)
pNum[j+1]=pNum[j];
pNum[j+1]=pNum[0];
}
}
void StlSort(int *pNum,long Num)
{
multimap <int,int> GMap;
int i;
for(i=1;i<=Num;i++)
GMap.insert(multimap <int,int>::value_type(pNum[i],pNum[i]));
multimap <int,int>::iterator itorGMap;
itorGMap=GMap.begin();
for(i=1;i<=Num;i++)
{
pNum[i]=itorGMap->first;
itorGMap++;
}
}
void WriteToFile(char* FileName,int *pNum,long Num)
{
FILE *fp;
fp=fopen(FileName,"w");
if(fp==NULL)
{
printf("建立文件失败");
exit(0);
}
for(int i=1;i<=Num;i++)
{
char buffer[BUFFERSIZE];
itoa(pNum[i],buffer,10);
int len;
len=strlen(buffer);
buffer[len++]='\n';
fwrite(buffer,sizeof(char),len,fp);
}
fclose(fp);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -