SAS中文论坛

标题: 运用冒泡排序法的原理进行sas排序 [打印本页]

作者: shiyiming    时间: 2009-4-14 09:09
标题: 运用冒泡排序法的原理进行sas排序
例如  data a;
          input  x@@;
          cards;
    23 44 81 13 42 34 26;
         run;
将这7个数从小到大排序,不能用proc sort,可能会用到iml 或者array .用冒泡排序法的原理在sas中编程
作者: shiyiming    时间: 2009-4-14 09:41
标题: 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;
作者: shiyiming    时间: 2009-4-16 17:14
标题: 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]

昨天看到的冒泡算法...现学现卖....




欢迎光临 SAS中文论坛 (https://mysas.net/forum/) Powered by Discuz! X3.2