您的位置:首页 > 其它

第三周作业--冒泡排序和归并排序

2014-03-27 23:13 120 查看
#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
=r1
;
}

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秒多...这里显示有点问题...



内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: