#include <iostream>
#include <fstream>
#include <ctime>
using namespace std;
void sort(int r[],int n)
{
int exchange,bound;
exchange=n;
while(exchange!=0)
{
bound=exchange;exchange=0;
for(int j=0;j<bound;j++) //一趟排序有记录交换时
if(r[j]>r[j+1]){
r[j]=r[j]+r[j+1];
r[j+1]=r[j]-r[j+1];
r[j]=r[j]-r[j+1];
exchange=j; //记载每一次记录交换的位置
}
}
};
int main(){
time_t start,end,time;
int max=1000000;
int a[max];
ifstream infile("largeW.txt");
for(int i=0;i<max;i++){
infile>>a[i];
}
start=clock();//开始计时
sort(a,max);
ofstream outfile("largeW_bubble.txt");
for(int c=0;c<max;c++){
cin>>a[c];
outfile<<a[c]<<endl;
}
infile.close();
outfile.close();
end=clock();
time=end-start;
cout<<endl<<"time:"<<time<<endl;
return 0;
}
冒泡排序花费的时间,还在等...
#include<iostream>
#include<fstream>
#include<ctime>
using namespace std;
void merge(int r[],int r1[],int s,int m,int t){
int i=s,j=m+1,k=s;
while(i<=m && j<=t){
if(r[i]<=r[j]) r1[k++]=r[i++];
else r1[k++]=r[j++];
}
if(i<=m)while(i<=m)
r1[k++]=r[i++];
else while(j<=t)
r1[k++]=r[j++];
for(int n=s;n<=t;n++)
r[n]=r1[n];
}
void mergesort(int r[],int r1[],int s,int t){
if(s<t){
int m=(s+t)/2;
mergesort(r,r1,s,m);
mergesort(r,r1,m+1,t);
merge(r,r1,s,m,t);
}
}
int main(){
time_t start,end,time;
int max=1000000;
int r[max];
int r1[max];
ifstream infile("largeW.txt");
for(int i=0;i<max;i++){
infile>>r[i];
}
start=clock();//开始计时
mergesort(r,r1,0,max-1);
ofstream outfile("largeW_merge.txt");
for(int q=0;q<max;q++)
{cin>>r1[q];
outfile<<r1[q]<<endl;
}
infile.close();
outfile.close();
end=clock();
time=end-start;//这里的时间是计算机内部时间
cout<<endl<<"time:"<<time<<endl;
return 0;
}
大概5秒多...这里显示有点问题...