| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2330 人关注过本帖
标题:怎样将重复的删去!!!!!!!
只看楼主 加入收藏
zhou31146001
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:303
专家分:131
注 册:2012-11-28
结帖率:93.94%
收藏
已结贴  问题点数:30 回复次数:43 
怎样将重复的删去!!!!!!!
现有一组极大的数组,
每个基因上的外显子起始与终止.rar (364.01 KB)

这个数据有一万多行,每行都有几个到几百个不等的数据,可现在这里重复数据太多,比如说
34567—56789和37896—56789
或2345—4567和2678—4555
或66666—99999和77777—100000
等等,这些数据有的部分重叠,有的完全重叠,完全让我疯掉了,现在我希望凡是出现过的区间都留下,重叠的部分都删去,最后只保留不重复且仅仅出现一次的区间,请问怎么弄呢?谢谢!!!!!

搜索更多相关主题的帖子: 希望 
2013-03-20 15:35
peach5460
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:武汉
等 级:贵宾
威 望:30
帖 子:2780
专家分:6060
注 册:2008-1-28
收藏
得分:0 
规则说清楚一点...

我总觉得授人以鱼不如授人以渔...
可是总有些SB叫嚣着:要么给代码给答案,要么滚蛋...
虽然我知道不要跟SB一般见识,但是我真的没修炼到宠辱不惊...
2013-03-20 15:57
czz5242199
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:4
帖 子:660
专家分:2400
注 册:2011-10-26
收藏
得分:0 
对所有数据按照第一关键词左边界,第二关键词右边界排序,然后一次遍历处理
2013-03-20 16:03
zhou31146001
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:303
专家分:131
注 册:2012-11-28
收藏
得分:0 
以下是引用peach5460在2013-3-20 15:57:24的发言:

规则说清楚一点...
我现在要将重复部分进行删去,得到的是不出现任何重复的数据区间。
当然要说明的是,文件中的每一行都是按(起始位点,终止位点)的顺序两两排列的,也就是按起始-终止-起始-终止。。。。。。。这样的顺序排列的,现在是每一对起始终止都有重复的部分,所以要删去重复的
2013-03-20 16:07
zhou31146001
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:303
专家分:131
注 册:2012-11-28
收藏
得分:0 
以下是引用czz5242199在2013-3-20 16:03:56的发言:

对所有数据按照第一关键词左边界,第二关键词右边界排序,然后一次遍历处理
您好,没理解您的意思,请问该怎么具体操作?谢谢!!!!!
2013-03-20 16:22
czz5242199
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:4
帖 子:660
专家分:2400
注 册:2011-10-26
收藏
得分:5 
程序代码:
#include <stdio.h>
#include <stdlib.h>
#define M 120000

struct Node
{
       int a,b;
}p[M];

int n;

int cmp(const void *a,const void *b)
{
    return ((struct Node*)a)->a-((struct Node*)b)->a;
}

void Calc()
{
     qsort(p+1,n,sizeof(p[0]),cmp);
     
     FILE *f=fopen("2.txt","w");
     
     int i,Pre=1,Max=p[1].b;
     for (i=2; i<=n; i++)
       if (p[i].a<=Max)
       {
                       if (Max<p[i].b) Max=p[i].b;
       }
       else
       {
                       fprintf(f,"%d %d\n",p[Pre].a,Max);
                       Pre=i;
                       Max=p[i].b;
       }
     fprintf(f,"%d %d\n",p[Pre].a,Max);
     fclose(f);
}

void Init()
{
     FILE *f=fopen("1.txt","r");
     char s[30];
     n=0;
     while (fscanf(f,"%[^,]",s)!=EOF)
     {
           sscanf(s,"%d",&p[++n].a);
           fgetc(f);
           fscanf(f,"%[^,]",s);
           sscanf(s,"%d",&p[n].b);
           fgetc(f);
     }
     fclose(f);
}

int main()
{
    Init();
    Calc();
}

2013-03-20 16:46
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:0 
这么多大批量的有规律的数据

为啥不用数据库搞呢

DO IT YOURSELF !
2013-03-20 16:51
zhou31146001
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:303
专家分:131
注 册:2012-11-28
收藏
得分:0 
以下是引用czz5242199在2013-3-20 16:46:43的发言:

#include  
#include  
#define M 120000
 
struct Node
{
       int a,b;
}p[M];
 
int n;
 
int cmp(const void *a,const void *b)
{
    return ((struct Node*)a)->a-((struct Node*)b)->a;
}
 
void Calc()
{
     qsort(p+1,n,sizeof(p[0]),cmp);
      
     FILE *f=fopen("2.txt","w");
      
     int i,Pre=1,Max=p[1].b;
     for (i=2; i<=n; i++)
       if (p.a<=Max)
       {
                       if (Max
您好,首先谢谢您!!!
有几个问题想请教,120000在指代什么呀?
在请问您,重复的部分删去之后,您把那个唯一可以表示许多重复部分的区间留下了吧?
谢谢您!!!
2013-03-20 17:21
peach5460
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:武汉
等 级:贵宾
威 望:30
帖 子:2780
专家分:6060
注 册:2008-1-28
收藏
得分:0 
以下是引用zhou31146001在2013-3-20 16:07:19的发言:

我现在要将重复部分进行删去,得到的是不出现任何重复的数据区间。
当然要说明的是,文件中的每一行都是按(起始位点,终止位点)的顺序两两排列的,也就是按起始-终止-起始-终止。。。。。。。这样的顺序排列的,现在是每一对起始终止都有重复的部分,所以要删去重复的


1,是只去完全重复或者是包含的,还是只要有部分交叉就取交集(并集?)
2,"凡是出现过的区间都留下,重叠的部分都删去"什么叫做出现过的都留下,又要把重复的删去?我怎么觉得前后矛盾
...

我实在看不懂你想干嘛?

我总觉得授人以鱼不如授人以渔...
可是总有些SB叫嚣着:要么给代码给答案,要么滚蛋...
虽然我知道不要跟SB一般见识,但是我真的没修炼到宠辱不惊...
2013-03-20 17:40
czz5242199
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:4
帖 子:660
专家分:2400
注 册:2011-10-26
收藏
得分:0 
以下是引用zhou31146001在2013-3-20 17:21:53的发言:

您好,首先谢谢您!!!
有几个问题想请教,120000在指代什么呀?
在请问您,重复的部分删去之后,您把那个唯一可以表示许多重复部分的区间留下了吧?
谢谢您!!!

你的文件里面11万多对数啊

存了,你可以自己测试下
2013-03-20 18:19
快速回复:怎样将重复的删去!!!!!!!
数据加载中...
 
   



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

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