| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 481 人关注过本帖
标题:请各位帮忙看下这个 “归并排序的函数”的死循环在哪里????
只看楼主 加入收藏
凝露的枯藤
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2010-12-13
结帖率:0
收藏
已结贴  问题点数:20 回复次数:2 
请各位帮忙看下这个 “归并排序的函数”的死循环在哪里????
函数看了好久,应该是死循环。。。可就是不晓得该改哪儿。。。。


#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;
}


搜索更多相关主题的帖子: 函数 
2010-12-13 14:38
lucky563591
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:4
帖 子:765
专家分:2103
注 册:2009-11-18
收藏
得分:10 
不太理解诶
2010-12-20 07:51
zhoufeng1988
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:北京
等 级:贵宾
威 望:27
帖 子:1432
专家分:6329
注 册:2009-5-31
收藏
得分:10 
程序代码:
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);
    }
}
Hava a try.

2010-12-20 13:42
快速回复:请各位帮忙看下这个 “归并排序的函数”的死循环在哪里????
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.023285 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved