第三周作业——冒泡排序和归并排序
2014-04-17 19:51
417 查看
#include<iostream>
#include<fstream>
#include<string>
#include<ctime>
using namespace std;
#include<stdlib.h>
void bubbleSort(long *a,long n)
{
for(long i=0;i<n-1;i++)
for(long j=1;j<n;j++)
if(a[i]>a[j])
{
a[i]=a[i]+a[j];
a[j]=a[i]-a[j];
a[i]=a[i]-a[j];
}
}
void merge(long p[],long q[],long r,long s,long t)
{
long i=r;
long j=s+1;
long k=r;
while(i<=s&&j<=t)
{
if(p[i]<q[j]) q[k++]=p[i++];
else q[k++]=p[j++];
}
if(i<=s)
while(i<=s)
q[k++]=p[i++];
else while(j<=t)
q[k++]=p[j++];
}
void mergePass(long p[],long q[],long h,long n)
{
long i=1;
while(i<=n-2*h+1)
{
merge(p,q,i,i+h-1,i+2*h-1);
i+=2*h;
}
if(i<n-h+1) merge(p,q,i,i+h-1,n);
else for(int k=i;k<=n;k++) q[k++]=p[k++];
}
void mergeSort(long p[],long q[],long n)
{
int h=1;
while(h<n)
{
mergePass(p,q,n,h);
h=2*h;
mergePass(q,p,n,h);
h=2*h;
}
}
int main()
{
long *a=new long[1000000];//long *b=new long[10];
if(a==NULL){ cout<<"分配失败"; exit(-1);}
string str;
clock_t start;
clock_t end;
ifstream infile("largeW.txt");
for(long i=0;i<1000000;i++)
{
getline(infile,str);
a[i]=atoi(str.c_str());
}
infile.close();
start=clock();
bubbleSort(a,1000000);
//mergeSort(a,b,10);
end=clock();
cout<<endl<<(start-end)/CLOCKS_PER_SEC<<endl;
ofstream outfile("largeW_bubble.txt ");
for(long j=0;j<1000000;j++)
outfile<<a[j]<<endl;
outfile.close();
/*ofstream outfile("largeW_merge.txt ");
for(long j=0;j<10;j++)
outfile<<a[j]<<endl;
outfile.close();*/
delete[] a;
//delete[] b;
return 0;
}
#include<fstream>
#include<string>
#include<ctime>
using namespace std;
#include<stdlib.h>
void bubbleSort(long *a,long n)
{
for(long i=0;i<n-1;i++)
for(long j=1;j<n;j++)
if(a[i]>a[j])
{
a[i]=a[i]+a[j];
a[j]=a[i]-a[j];
a[i]=a[i]-a[j];
}
}
void merge(long p[],long q[],long r,long s,long t)
{
long i=r;
long j=s+1;
long k=r;
while(i<=s&&j<=t)
{
if(p[i]<q[j]) q[k++]=p[i++];
else q[k++]=p[j++];
}
if(i<=s)
while(i<=s)
q[k++]=p[i++];
else while(j<=t)
q[k++]=p[j++];
}
void mergePass(long p[],long q[],long h,long n)
{
long i=1;
while(i<=n-2*h+1)
{
merge(p,q,i,i+h-1,i+2*h-1);
i+=2*h;
}
if(i<n-h+1) merge(p,q,i,i+h-1,n);
else for(int k=i;k<=n;k++) q[k++]=p[k++];
}
void mergeSort(long p[],long q[],long n)
{
int h=1;
while(h<n)
{
mergePass(p,q,n,h);
h=2*h;
mergePass(q,p,n,h);
h=2*h;
}
}
int main()
{
long *a=new long[1000000];//long *b=new long[10];
if(a==NULL){ cout<<"分配失败"; exit(-1);}
string str;
clock_t start;
clock_t end;
ifstream infile("largeW.txt");
for(long i=0;i<1000000;i++)
{
getline(infile,str);
a[i]=atoi(str.c_str());
}
infile.close();
start=clock();
bubbleSort(a,1000000);
//mergeSort(a,b,10);
end=clock();
cout<<endl<<(start-end)/CLOCKS_PER_SEC<<endl;
ofstream outfile("largeW_bubble.txt ");
for(long j=0;j<1000000;j++)
outfile<<a[j]<<endl;
outfile.close();
/*ofstream outfile("largeW_merge.txt ");
for(long j=0;j<10;j++)
outfile<<a[j]<<endl;
outfile.close();*/
delete[] a;
//delete[] b;
return 0;
}
相关文章推荐
- 第三周作业——冒泡排序(BubbleSort)与归并排序(MergeSort)
- 第三周作业——冒泡排序和归并排序
- 第三周作业——冒泡排序和归并排序(计科1113练思安)
- 第三周作业--冒泡排序和归并排序
- 第三周作业——冒泡排序和归并排序
- 第三周作业——冒泡排序和归并排序
- 第三周作业——冒泡排序和归并排序
- 第三周作业——冒泡排序和归并排序
- 第三周作业——冒泡排序和归并排序
- java-冒泡排序与归并排序(第三周作业)
- 第三周作业 -- 冒泡排序和归并排序
- 第三周作业——冒泡排序和归并排序
- 第三周作业——冒泡排序和归并排序
- 第三周作业——冒泡排序和归并排序
- 第三周作业——冒泡排序和归并排序
- 第三周作业——冒泡排序和归并排序
- 第三周作业——冒泡排序和归并排序
- 第三周作业——冒泡排序和归并排序
- 第三周作业——冒泡排序和归并排序
- 第三周作业——冒泡排序和归并排序(只完成冒泡算法)