楼主: guo.bailing
5684 6

[技术讨论与投票] 运用冒泡排序法的原理进行sas排序 [推广有奖]

区版主

已卖:275份资源

大师

30%

还不是VIP/贵宾

-

TA的文库  其他...

文库1

文库2

文库3

威望
6
论坛币
1336379 个
通用积分
20289.1888
学术水平
558 点
热心指数
776 点
信用等级
515 点
经验
147031 点
帖子
4111
精华
24
在线时间
10956 小时
注册时间
2009-7-9
最后登录
2025-11-21

初级热心勋章 中级热心勋章 初级信用勋章 初级学术勋章

楼主
guo.bailing 发表于 2011-1-11 22:32:43 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
例如 data a;
input x@@;
cards;
23 44 81 13 42 34 26;
run;
将这7个数从小到大排序,不能用proc sort,可能会用到iml 或者array .用冒泡排序法的原理在sas中编程
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:SAS排序 冒泡排序法 cards array Input 原理 SAS 冒泡

回帖推荐

baoaibaobao 发表于3楼  查看完整内容

不知道冒泡排序,google了一下; 冒泡排序(Bubble Sorting)的基本思想是:设待排序n个元素存放在数组a[n]中,无序区范围初始为(a(0),a(1),a(2),...,a[n-1]),冒泡排序方法是在当前无序区内,从最上面的元素a[0]开始,对每两个相邻的元素a和a(i=0,1,...,n-1)进行比较,且使值较小的元素换至值较大的元素之上(若a>a,则a和a的值互换),这样经过一趟冒泡排序后,假设最后下移的元素为a[k],则无序区中值较大的几个元素到达下端并从小到大依次 ...

本帖被以下文库推荐

自助者,天助之!

沙发
guo.bailing 发表于 2011-1-11 22:33:27
  1. data a;
  2. input x@@;
  3. cards;
  4. 23 44 81 13 42 34 26
  5. ;
  6. run;
  7. proc sort;by x;run;

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

  11. %macro exchange(x,y);
  12. do; temp=&x;  &x=&y;  &y=temp; end;
  13. %mend;

  14. data final;
  15.   set b;
  16.   array arr(*) x:;
  17.     do i=1 to dim(arr);
  18.      do j=1 to dim(arr)-1;
  19.        if arr(j)>arr(j+1) then %exchange(arr(j),arr(j+1));
  20.      end;
  21.     end;
  22. run;
复制代码
自助者,天助之!

藤椅
baoaibaobao 发表于 2011-1-11 23:16:02
不知道冒泡排序,google了一下;
冒泡排序(Bubble Sorting)的基本思想是:设待排序n个元素存放在数组a[n]中,无序区范围初始为(a(0),a(1),a(2),...,a[n-1]),冒泡排序方法是在当前无序区内,从最上面的元素a[0]开始,对每两个相邻的元素a[i+1]和a[i](i=0,1,...,n-1)进行比较,且使值较小的元素换至值较大的元素之上(若a[i]>a[i+1],则a[i]和a[i+1]的值互换),这样经过一趟冒泡排序后,假设最后下移的元素为a[k],则无序区中值较大的几个元素到达下端并从小到大依次存放在a[k+1],a[k+2],...a[n-1]中,这样无序区范围变为(a[0],a[1],a[2],...,a[k])。在当前无序区内进行下一趟冒泡排序。这个过程一直到某一趟排序中不出现元素交换的动作,排序结束。整个排序过程最多执行n-1遍。这种排序方法是通过相邻元素之间的比较与交换,使值较小的元素逐渐从后部移向前部(从下标较大的单元移向下标较小的单元),就象水底下的气泡一样逐渐向上冒。故称为冒泡排序法。
已有 1 人评分学术水平 收起 理由
论坛数据分析 + 1 观点有启发

总评分: 学术水平 + 1   查看全部评分

板凳
sxlion 发表于 2011-1-13 14:18:25
为什么有现成的函数不用啊
sortn

报纸
tiantianfrm 发表于 2011-1-14 22:00:07
data a;

input x1-x7;

cards;

23 44 81 13 42 34 26

;

run;

data b;
  set a;
  array a(7) x1-x7;
    do i=1 to 7;
     do j=i to 7;
       if a(j)<a(i) then  do;
temp=a(j);a(j)=a(i);a(i)=temp;  
    end;
    end;
         end;
run;

地板
tiantianfrm 发表于 2011-1-14 22:04:11
中间 用一个临时变量temp ,如果后面一个比前面一个小,就先吧后面的a(j)给temp,然后让a(j))=a(i);
在让a(i)=temp。就是中间借助一个变量,颠倒一下顺序。

7
baoaibaobao 发表于 2011-1-14 22:19:51
6# tiantianfrm 楼上,貌似你已经在别的地方发过了哦,呵呵!

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

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-25 13:27