SAS中文论坛

 找回密码
 立即注册

扫一扫,访问微社区

查看: 673|回复: 5
打印 上一主题 下一主题

求逆序总数

[复制链接]

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
楼主
 楼主| 发表于 2010-5-9 14:00:18 | 只看该作者

求逆序总数

例如有序列:7 ,5,8,9.
对于7,有两个数8和9大于它.5有两个数8和9大于它.8有一个数9大于它;那么逆序总数就为5.怎样编程实现呢?
希望得到大家的帮助,谢谢
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
沙发
 楼主| 发表于 2010-5-9 14:43:20 | 只看该作者

Re: 求逆序总数

[code:3e4e0w4n]data temp(drop=i j);
        input x1-x4;
        array arr{*} x1-x4;
        sum=0;
        do i=1 to dim(arr);
                do j=i to dim(arr);
                        if arr(j) gt arr(i) then sum+1;
                end;
        end;
datalines;
7 5 8 9
1 3 3 4
4 6 3 1
6 9 4 1
;[/code:3e4e0w4n]
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
板凳
 楼主| 发表于 2010-5-9 15:36:11 | 只看该作者

Re: 求逆序总数

可以不用数组做么?
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
地板
 楼主| 发表于 2010-5-9 15:45:08 | 只看该作者

Re: 求逆序总数

比如,数据是这样的:
data temp;
input x@@;
cards;
7 5 8 9
1 3 3 4
4 6 3 1
6 9 4 1
;
怎么求逆序总数呢
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
5#
 楼主| 发表于 2010-5-9 16:25:52 | 只看该作者

Re: 求逆序总数

[code:2v1rrqco]data temp;
        input x @@;
        id=_n_;
cards;
7 5 8 9
1 3 3 4
4 6 3 1
6 9 4 1
;
proc sql noprint;
        select count(a.x) into :count
                from temp a inner join temp b on b.id>a.id and b.x>a.x;
quit;
%put NOTE:*** COUNT=%trim(&count) ***;[/code:2v1rrqco]
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
6#
 楼主| 发表于 2010-5-9 16:45:09 | 只看该作者

Re: 求逆序总数

谢谢hopewell
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|手机版|Archiver|SAS中文论坛  

GMT+8, 2026-2-4 06:46 , Processed in 0.066491 second(s), 19 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表