免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: xidianyiming
打印 上一主题 下一主题

一个关于skyline的文本处理问题 [复制链接]

论坛徽章:
2
射手座
日期:2014-10-10 15:59:4715-16赛季CBA联赛之上海
日期:2016-03-03 10:27:14
11 [报告]
发表于 2011-05-29 15:29 |只看该作者
回复 10# xidianyiming


    就你第一贴的示意的那十个数据,应该输出的结果是什么呢,我之前的理解应该是有些出入。

论坛徽章:
0
12 [报告]
发表于 2011-05-29 15:47 |只看该作者
回复 11# yinyuemi


    如果你把最后一个数据修改下,比如最后一条记录改为0.90407 0.62039 0.93752 0.91861 0.43648 这样就不对了,很明显如果最后一条记录改成上述那样,则第一条记录就不是支配点了,因为虽然支配了第二条记录,但他本身被最后一条记录支配。

dataset.zip

409.32 KB, 下载次数: 3

论坛徽章:
2
射手座
日期:2014-10-10 15:59:4715-16赛季CBA联赛之上海
日期:2016-03-03 10:27:14
13 [报告]
发表于 2011-05-29 16:31 |只看该作者
本帖最后由 yinyuemi 于 2011-05-29 16:40 编辑

回复 12# xidianyiming
  1. awk '{for(i=1;i<=NF;i++) a[NR,i]=$i;c[NR]=$0}
  2. END{for(m=1;m<=NR;m++)
  3.         if(d[m]!="x"){
  4.                 {for(n=m+1;n<=NR;n++)
  5.                         {
  6.                         for(l=1;l<=NF;l++){(a[m,l]-a[n,l]>0)?t++:t--}
  7.                         if(t=="5"){d[m]="d";d[n]="x";t=0}
  8.                         if(t=="-5"){d[n]="d";d[m]="x";t=0}
  9.                         t=0}
  10.                         }
  11.                 }
  12.         for(y=1;y<=NR;y++)
  13.                 if(d[y]=="d"){print c[y]>"sk"}
  14.                 else if (d[y]=="x"){print c[y]>"rest"}
  15. }' dataset
复制代码
---------------------
看来不能break,加了个判断d[m]!="x"

result.zip

369.34 KB, 下载次数: 3

论坛徽章:
3
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:51:162015年亚洲杯之阿曼
日期:2015-04-07 20:00:59
14 [报告]
发表于 2011-05-29 18:02 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
1
摩羯座
日期:2014-12-29 15:59:36
15 [报告]
发表于 2011-05-29 18:03 |只看该作者
难得的好题啊.我试试

论坛徽章:
1
摩羯座
日期:2014-12-29 15:59:36
16 [报告]
发表于 2011-05-29 18:47 |只看该作者
忽略了一点  有没有既不是支配也不是被支配的记录存在的可能

论坛徽章:
0
17 [报告]
发表于 2011-05-29 18:59 |只看该作者
回复 16# ziyunfei


    你好,不会啊。只要不是被支配点的记录都是支配点,所有记录要么是支配点,要么是被支配点。

论坛徽章:
1
摩羯座
日期:2014-12-29 15:59:36
18 [报告]
发表于 2011-05-29 19:01 |只看该作者
本帖最后由 ziyunfei 于 2011-05-29 19:13 编辑
  1. awk '{a[NR]=$0;for(i in a){split(a[i],b);for(j=1;j<=5;j++){if(b[j]>$j){break}}if(j==5){print a[i]>"rest.txt";delete c[a[i]];delete a[i];c[a[NR]];}}}END{for(i in a){if(a[i] in c){print a[i]>"sk.txt"}else{print a[i]>"no.txt"}}}' dataset.txt
复制代码

论坛徽章:
1
摩羯座
日期:2014-12-29 15:59:36
19 [报告]
发表于 2011-05-29 19:02 |只看该作者
回复  ziyunfei


    你好,不会啊。只要不是被支配点的记录都是支配点,所有记录要么是支配点,要么是 ...
xidianyiming 发表于 2011-05-29 18:59



    但你给的测试文本有这样的300多条记录,既不支配也不被支配的.如果我的没错的话.

论坛徽章:
0
20 [报告]
发表于 2011-05-29 19:07 |只看该作者
还有个问题,对于AWK,在处理过程中,如果删除hash表中元素(已经判断出是被支配记录),能否增加内存的复用,从而节省内存呢?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP