请各位帮忙看下这个 “归并排序的函数”的死循环在哪里????
函数看了好久,应该是死循环。。。可就是不晓得该改哪儿。。。。#include <iostream>
#include <iomanip>
#include <ctime>
#include <fstream>
const int NUM=5;
typedef struct {
int r[NUM+1];
int length;
}SqList;
using namespace std;
//构造随机数文件
void Random()
{
fstream dataFile ;
int a;
dataFile.open("5-1.txt",ios::out);
if(!dataFile)
{
cout<<"打开文件失败~";
exit(0);
}
srand(time(0));
for (int i=0 ;i<10;i++)
{
for(int j=0 ;j<NUM ;j++)
{
a=rand()%NUM;
dataFile<<setw(6)<<a;
}
dataFile<<endl<<endl;
}
dataFile.close();
}
//读取文件中数据
void Read(SqList &L)
{
fstream ReadFile ;
ReadFile.open("5-1.txt",ios::in) ;
for(int i=1;i<=NUM;i++)
{ ReadFile>>L.r[i]; }
ReadFile.close();
}
//把表中数据写到文件中
void Write(SqList L)
{
fstream WriteFile;
WriteFile.open("5-2.txt",ios::out) ;
for(int i=1;i<=NUM;i++)
{ WriteFile<<setw(6)<<L.r[i]; }
WriteFile.close();
}
//归并排序函数
void Merge(int SR[] , int TR[] ,int i ,int m, int n)
{
int j,k;
for(j=m+1 ,k=i;i<=m && j<=n;++k)
{
if(SR[i]<SR[j]) TR[k]=SR[i++];
else TR[k]=SR[j++];
}
while(i<=m)
{ TR[k++]=SR[i++];}
while(j<=n)
{ TR[k++]=SR[j++]; }
}
void MSort(int SR[] , int TR1[] , int s ,int t)
{
int TR2[NUM] ,m;
if(s==t) TR1[s]=SR[s];
else
m=(s+t)/2;
MSort(SR ,TR2,s,m);
MSort(SR ,TR2,m+1,t);
Merge(TR2,TR1,s,m,t);
}
void MergeSort(SqList &L)
{
MSort(L.r,L.r,1,NUM);
}
//主函数
int main()
{
cout<<"开始" ;
SqList L;
Random();
Read(L);
MergeSort(L);
Write(L);
cout<<"end!";
return 0;
}