1114班第三周作业,归并排序

来源:互联网 发布:火影忍者网络错误 编辑:程序博客网 时间:2024/06/05 17:54

归并排序算法代码

截图是在源程序上修改的,所以截图名字还是冒泡工程;

不知为什么,我归并也要运算很长时间,是不是我哪错了?

别人运算几秒就行的,截图只是小部分数据运算的结果,

#include<iostream>

#include<fstream>
#include<vector>
#include<time.h>
#define INFINITE 0xFFFFF
using namespace std;
int max;int i,j;


void merge(int*a,int p,int q,int r)
{






//int r1[],r2[];
int*r1;
int*r2;
r1=new int[max];
r2=new int[max];
int n=r-p;
for(i=p;i<q+1;i++)
{r1[i-p]=a[i];}
r1[q-p+1]=INFINITE;
for(j=q+1;j<r+1;j++)
{r2[j-q-1]=a[j];}
r2[r-q]=INFINITE;
i=0;
j=0;
int k;
for(k=p;k<r+1;k++)
{
if(r1[i]>r2[j])
{a[k]=r2[j++];}
else
{a[k]=r1[i++];}
}


 delete [] r1;
delete [] r2;
}
void costtime()
{
cout<<"该程序所花费时间为:"<<clock()<<"毫秒"<<'\n';
}




void mergeSort(int*a,int p,int q)
{
if(q-p>0)
{mergeSort(a,p,(q+p)/2);
     mergeSort(a,(q+p)/2+1,q);
     merge(a,p,(q+p)/2,q);
}
}




int main()
{
int num;
//int a[80000];


vector<int>scorevector;
ifstream binfile;
binfile.open("C:\\Users\\caiminghai\\Desktop\\binfile.txt");
while(!binfile.eof())
{   
binfile>>num;
scorevector.push_back(num);
//cout<<num<<endl;



binfile.close();
max=scorevector.size();
//cout<<max;
int*a;
a=new int[max];
for( i=0;i<scorevector.size();i++)
{a[i]=scorevector[i];}
mergeSort(a,0,max-1);


for(i=0;i<scorevector.size();i++)
cout<<a[i]<<endl;


fstream largeW_bubble;
largeW_bubble.open("C:\\Users\\caiminghai\\Desktop\\largeW_bubble.txt");


for(i=0;i<scorevector.size();i++)
{
largeW_bubble<<scorevector[i]<<'\n';
}
largeW_bubble.close();
costtime();

delete [] a;
return 0;
}

0 0
原创粉丝点击