产生随机数表的代码
#include<iostream>
#include<fstream>
#include<stdlib.h>
#include<ctime>
using namespace std;
int main() {
srand(time(0));
ofstream output("input.txt");
int n;
cin>>n;
output<<n<<" ";
cout<<n<<" ";
for(int i=0;i<n;i++)
{
int k=rand()%(1000000-1+0)+0;
output<<k<<" ";
cout<<k<<" ";
}
return 0;
}
合并排序的代码
#include<iostream>
#include<fstream>
#include <windows.h>
using namespace std;
void merge(int a[],int left,int right){
int m=right-left+1;
int b[m],i=0,left0=left;
int mid=(left+right)/2,k=mid+1;
while((left<=mid)&&(k<=right)){
if(a[left]<a[k])
b[i++]=a[left++];
else
b[i++]=a[k++];
}
if(left>mid)
for(k;k<=right;k++)
b[i++]=a[k];
if(k>right)
for(left;left<=mid;left++)
b[i++]=a[left];
for(int j=0;j<m;j++)
a[left0++]=b[j];
}
void merge_sort(int a[],int left,int right){
if(left==right)
return;
if(left<right){
int mid=(left+right)/2;
merge_sort(a,left,mid);
merge_sort(a,mid+1,right);
merge(a,left,right);
}
}
int main()
{
ifstream input("input.txt");
if(!input)
cout<<"打开失败!";
ofstream output("output.txt");
int n;
input>>n;
int a[n];
cout<<"待排序的数为:"<<endl;
output<<"待排序的数为:"<<endl;
for(int i=0;i<n;i++){
input>>a[i];
cout<<a[i]<<" ";
output<<a[i]<<" ";
}
cout<<endl<<endl<<"排序结果:"<<endl;
output<<endl<<endl<<endl<<"排序结果:"<<endl;
LARGE_INTEGER BegainTime;
LARGE_INTEGER EndTime;
LARGE_INTEGER Frequency;
QueryPerformanceFrequency(&Frequency);
QueryPerformanceCounter(&BegainTime) ;
merge_sort(a,0,n-1);
QueryPerformanceCounter(&EndTime);
for(int j=0;j<n;j++)
cout<<a[j]<<" ";
for(int j=0;j<n;j++)
output<<a[j]<<" ";
cout<<endl<<endl<<"运行时间:"
<<(double)(EndTime.QuadPart-BegainTime.QuadPart)
<<"us"<<endl;
output<<endl<<endl<<"运行时间:"
<<(double)(EndTime.QuadPart-BegainTime.QuadPart)
<<"us"<<endl;
return 0;
}
有疑问可在评论区提出