图生成器

这段代码实现了生成随机连通图的算法,并通过快速排序和归并排序对图的边进行排序,最后将结果写入文件。程序分为两部分:创建图文件并排序,以及对排序后的文件去重。
摘要由CSDN通过智能技术生成

CreateGraphPart.cpp ///产生小文件个part,

#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <windows.h>
#include <string.h>


using namespace std;


static int ratio = 2;
const int  inme = 1000;
const int MAX_NAME = 20;
//产生一个随机的连通图文件,并返回边数
int CreateTree(int n)
{
int count=1;
bool isGreate = false;  //用来标记2倍是否大于n
    char fileName[10] ;
    FILE *graphfile;
int weight;
    int m=0;
    int no =1;


//生成树
while(count<n&&!isGreate)
{
   if(m%1000 == 0) /****每1000个元组放入一个文件中****/
   {
       //cout<<"Please input fileName :";
       //cin>>fileName;
       sprintf(fileName,"part%d",no);
            no++;
       graphfile = fopen(fileName,"a");
   }


weight = rand()%10+1;//产生一个0-10之间的随机数
if(2*count<=n)
{
fprintf(graphfile,"%d",count);
fprintf(graphfile,"%c",' ');
fprintf(graphfile,"%d",2*count);
fprintf(graphfile,"%c",' ');
fprintf(graphfile,"%d",weight);
fprintf(graphfile,"%s","\n");
m++;
if(2*count+1<=n)
{
weight = rand()%10+1;//产生一个0-10之间的随机数
fprintf(graphfile,"%d",count);
fprintf(graphfile,"%c",' ');
fprintf(graphfile,"%d",2*count+1);
fprintf(graphfile,"%c",' ');
fprintf(graphfile,"%d",weight);
fprintf(graphfile,"%s","\n");
m++;
}


}
if(2*count>n || 2*count+1>n)
isGreate = true;
        count++;


}




//产生三个随机数,写入到文件
int node1,node2;


while(m/n<ratio)
{
   cout<<"m ="<<m<<endl;
   if( m % 1000 == 0 && (m+1)/n<ratio) /****每1000个元组放入一个文件中****/
   {
       fclose(graphfile);
       ///cout<<"Please input fileName :";
      /// cin>>fileName;
       sprintf(fileName,"part%d",no);
            no++;
       graphfile = fopen(fileName,"a"

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值