SAS中文论坛

 找回密码
 立即注册

扫一扫,访问微社区

查看: 922|回复: 2
打印 上一主题 下一主题

运用冒泡排序法的原理进行sas排序

[复制链接]

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
楼主
 楼主| 发表于 2009-4-14 09:09:13 | 只看该作者

运用冒泡排序法的原理进行sas排序

例如  data a;
          input  x@@;
          cards;
    23 44 81 13 42 34 26;
         run;
将这7个数从小到大排序,不能用proc sort,可能会用到iml 或者array .用冒泡排序法的原理在sas中编程
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
沙发
 楼主| 发表于 2009-4-14 09:41:14 | 只看该作者

Re: 运用冒泡排序法的原理进行sas排序

SAS 新人 仅供参考
**************************
data _null_;
array n[7] (23 44 81 13 42 34 26);
do i=1 to dim(n)-1;
  do j=i+1 to dim(n);
    if n[i]>n[j] then do;
      temp=n[i];
      n[i]=n[j];
      n[j]=temp;
      end;
  end;
end;
put n[*];
run;
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
板凳
 楼主| 发表于 2009-4-16 17:14:03 | 只看该作者

Re: 运用冒泡排序法的原理进行sas排序

[code:hd5x0v5h]
data a;
input x@@;
cards;
23 44 81 13 42 34 26
;
run;
proc sort;by x;run;

proc transpose data=a out=b(drop=_name_) prefix=x;
        var x;
run;

%macro exchange(x,y);
do; temp=&x;  &x=&y;  &y=temp; end;
%mend;

data final;
  set b;
  array arr(*) x:;
    do i=1 to dim(arr);
          do j=1 to dim(arr)-1;
       if arr(j)>arr(j+1) then %exchange(arr(j),arr(j+1));
          end;
    end;
run;
[/code:hd5x0v5h]

昨天看到的冒泡算法...现学现卖....
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-2-5 12:20 , Processed in 0.183831 second(s), 20 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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