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

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

搜索更多相关主题的帖子: 希望 
2013-03-20 15:35
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
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
zhou31146001
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:303
专家分:131
注 册:2012-11-28
收藏
得分:0 
以下是引用beyondyf在2013-3-20 19:40:43的发言:

还是拿例子来说明吧。比如1-10与5-15这两组,你希望保留的结果是
1-10、11-10 ?
还是
1-5、6-15 ?
还是
1-4、5-10、11-15 ?
还是别的?
  您好,按您说的例子,我希望保留的是1-5和6-15.也就是在原来基础上作修改,而不减少数对个数。
2013-03-20 20:08
zhou31146001
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:303
专家分:131
注 册:2012-11-28
收藏
得分:0 
以下是引用beyondyf在2013-3-20 19:49:28的发言:

呃,下载你的文件看了下,你的文件中都是单独的数,没看出区间来,这区间在你的数据中是怎么表达的?两个相邻的数据表达一个区间?

每一行又是什么意思,第一行有27个数值,如果是每两个组成一个区间那就不该是奇数个,这否定了我上面的猜测。

还是相邻两行相应位置的数据来表达区间的左右边界?

呵呵,总之是没看明白。
您好,那个文件如果用UE打开,每一行会更明显,一共有17173行,当然每一行肯定是偶数的,因为相邻两个就是起始点与终止点。其中第一行应该是54个数。
2013-03-20 20:12
zhou31146001
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:303
专家分:131
注 册:2012-11-28
收藏
得分:0 
以下是引用beyondyf在2013-3-20 20:25:30的发言:

嗯,关掉记事本的自动换行后看确实是54个,但在第27个后有一个制表符,什么情况?

另外,关于输出的要求还需要说的明白点
制表符?这个应该没有吧,我在发一下文件。
每个基因上的外显子起始与终止.rar (364.02 KB)


我希望输出的结果还是跟原文件类似,仍是17173行,每一行还是在原来每一行数据基础上改动过后的数据,当然希望消除掉17173行中所有重复的。谢谢您了!!!!!!
2013-03-20 20:36
zhou31146001
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:303
专家分:131
注 册:2012-11-28
收藏
得分:0 
以下是引用beyondyf在2013-3-20 21:01:25的发言:

那个制表符确实是存在的,新发的文件里也有,在每行数据的中间都有一个。

当然,这倒不重要,再确认几个细节就可以了。

1、一行的数据最多有多少个?不是很多的话(比如几万个以内)采用固定数组处理比较简单
2、每行中数据是按升顺序排列的?至少你的文件里看起来是这样,如果确定如此那就可以省去一个排序环节,处理起来可以很简单
3、你习惯什么样的执行方式?喜欢在控制台里执行还是喜欢鼠标双击图标执行?前者,我建议通过流的重定向输入输出,当然你要是喜欢也可以加参数;后者就只能将输入输出文件路径固化在程序里,这其实并不是命令行程序的合适执行方式,但重要的是你喜欢怎样。
一行数据我查过,最多260个。
每行数据升序就行。
我希望能用fopen()打开文件,fprintf()函数把结果输出到txt文件里,这样我用数据画图时可以直接导入txt文件,而且可以执行其他类似数据了。
谢谢您,有麻烦您了!!!!!
2013-03-20 21:10
zhou31146001
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:303
专家分:131
注 册:2012-11-28
收藏
得分:0 
以下是引用beyondyf在2013-3-20 21:23:00的发言:

这用客气。输出txt文件的方法很多,并不一定非要用fopen,fprintf。我习惯流的重定向,但程序是写给你用的,当然要符合你的习惯,你喜欢什么样的我就写成什么样的。

“每行数据升序就行”,我是在问你,你的数据中确定都是升序的么?如果是我就不再写排序的过程了,没必要重复它不是。
应该都是升序的,只要这17173行数据没任何重复就可以,我难在去除所有的重复部分,谢谢了!!!!
2013-03-20 21:29
zhou31146001
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:303
专家分:131
注 册:2012-11-28
收藏
得分:0 
以下是引用beyondyf在2013-3-20 22:08:42的发言:

这些行不出现重复?意思是第A行的区间与其它行中的区间也不能重复?如果是这样那处理起来就复杂一些了。

用例子说明吧,像下面这两行数据你希望得到什么样的结果?

1, 10, 2, 5, 3, 15
5, 8, 9, 15
是的,所有行都不能重复,这也是让我为难的
1,10,0,0,11,15
0,0,0,0

麻烦您了
2013-03-21 09:35
快速回复:怎样将重复的删去!!!!!!!
数据加载中...
 
   



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

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