楼主: 6203479170
1830 4

怎样将一个变量的值排序? [推广有奖]

  • 0关注
  • 0粉丝

硕士生

97%

还不是VIP/贵宾

-

威望
0
论坛币
90 个
通用积分
2.7600
学术水平
2 点
热心指数
7 点
信用等级
2 点
经验
292 点
帖子
125
精华
0
在线时间
219 小时
注册时间
2009-8-2
最后登录
2025-9-8

楼主
6203479170 发表于 2013-6-18 22:37:57 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
假设一个变量a 的值是66,02,03,01
现在希望把这些数字从小到大排序得到01,02,03,66,应该怎么写好呢
我想了好一会都想不通。

我现在的思路是能不能用冒泡排序法呢?

二维码

扫码加我 拉你入群

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

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

关键词:冒泡排序法 从小到大 不能用 想不通

本帖被以下文库推荐

沙发
矛盾的慧根 发表于 2013-6-18 23:05:22
这是要自己写算法吗

藤椅
6203479170 发表于 2013-6-18 23:17:04
矛盾的慧根 发表于 2013-6-18 23:05
这是要自己写算法吗
data temp;
        a="66,02,03,01";
run;

不是简单的sort。。

板凳
矛盾的慧根 发表于 2013-6-19 00:05:28

报纸
hopewell 发表于 2013-6-19 18:22:25
  1. data raw;
  2.     input a :$20.;
  3. datalines;
  4. 66,02,03,01
  5. 77,01,04,02
  6. ;

  7. /*1*/
  8. data out1(index=(id=(row temp)));
  9.     set raw;
  10.     row=_n_;
  11.     do i=1 to count(a,',')+1;
  12.         temp=scan(a,i,',');
  13.         output;
  14.     end;
  15. run;
  16. data out1(drop=i row temp);
  17.     length _a $100;
  18.     do _n_=1 by 1 until(last.row);
  19.         set out1;
  20.         by row temp;
  21.         _a=catx(',',_a,temp);
  22.     end;
  23. run;

  24. /*2*/
  25. data out2(drop=i temp rc);
  26.     length temp $10 _a $100;
  27.     if _n_=1 then do;
  28.         declare hash h(hashexp:2,ordered:'a');
  29.         declare hiter hi('h');
  30.         rc=h.definekey('temp');
  31.         rc=h.definedata('temp');
  32.         rc=h.definedone();
  33.     end;
  34.     set raw;
  35.     do i=1 to count(a,',')+1;
  36.         temp=scan(a,i,',');
  37.         rc=h.add();
  38.     end;
  39.     call missing(temp);
  40.     do until(hi.next() ne 0);
  41.         _a=catx(',',_a,temp);
  42.     end;
  43.     rc=h.clear();
  44. run;

  45. /*3*/
  46. proc fcmp outlib=work.funcs.benfunc;
  47.     function bensort(str $) $100;
  48.         attrib out length=$100;
  49.         array arr[9] $10;
  50.         do i=1 to 9;
  51.             arr[i]=scan(str,i,',');
  52.         end;
  53.         call sortc(arr1,arr2,arr3,arr4,arr5,arr6,arr7,arr8,arr9);
  54.         do i=1 to 9;
  55.             out=catx(',',out,arr[i]);
  56.         end;
  57.         return(out);
  58.     endsub;
  59. run;
  60. options cmplib=work.funcs;
  61. data out3;
  62.     set raw;
  63.     length _a $100;
  64.     _a=bensort(a);
  65. run;
复制代码
已有 2 人评分经验 论坛币 学术水平 热心指数 信用等级 收起 理由
6203479170 + 1 + 1 + 1 精彩帖子
webgu + 80 + 80 + 5 + 5 + 5 精彩帖子

总评分: 经验 + 80  论坛币 + 80  学术水平 + 6  热心指数 + 6  信用等级 + 6   查看全部评分

观钓颇逾垂钓趣 种花何问看花谁

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

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