楼主: LEAONKAN
1133 2

[问答] 建立一个大根堆,如下代码 [推广有奖]

  • 0关注
  • 0粉丝

初中生

90%

还不是VIP/贵宾

-

威望
0
论坛币
0 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
79 点
帖子
7
精华
0
在线时间
21 小时
注册时间
2015-3-6
最后登录
2016-6-17

楼主
LEAONKAN 发表于 2015-3-27 15:32:56 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
  1. xh<-rnorm(50)
  2. xh<-abs(xh)
  3. hs<-function(x){
  4.         for(i in length(x)/2:1){
  5.                 x<-ha(x,i,length(x))
  6.         }
  7.         return(x)
  8. }
  9. ha<-function(x,n,m){
  10.         k<-n
  11.         f<-x[n]
  12.         if(2*n<=m && x[2*n]>f){
  13.                 k<-2*n
  14.                 f<-x[2*n]
  15.         }
  16.         if(2*n+1<=m && x[2*n+1]>f){
  17.                 k<-2*n+1
  18.                 f<-x[2*n+1]
  19.         }
  20.         if(k!=n){
  21.                 t<-x[n]
  22.                 x[n]<-x[k]
  23.                 x[k]<-t
  24.                 x<-ha(x,k,m)
  25.         }
  26.         return(x)
  27. }
复制代码
为什么返回的结果和原数组一样?
是hs函数调用数组xh
二维码

扫码加我 拉你入群

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

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


沙发
统计与R语言咨询 发表于 2015-3-27 15:41:00
感觉你是不是应该用下面的代码:
  1. set.seed(2015)
  2. xh<-rnorm(50)
  3. xh<-abs(xh)
  4. hs<-function(x){
  5.   for(i in (length(x)/2):1){
  6.     x<-ha(x,i,length(x))
  7.   }
  8.   return(x)
  9. }
  10. ha<-function(x,n,m){
  11.   k<-n
  12.   f<-x[n]
  13.   if(2*n<=m && x[2*n]>f){
  14.     k<-2*n
  15.     f<-x[2*n]
  16.   }
  17.   if(2*n+1<=m && x[2*n+1]>f){
  18.     k<-2*n+1
  19.     f<-x[2*n+1]
  20.   }
  21.   if(k!=n){
  22.     t<-x[n]
  23.     x[n]<-x[k]
  24.     x[k]<-t
  25.     x<-ha(x,k,m)
  26.   }
  27.   return(x)
  28. }

  29. hs(xh)
复制代码


主要错误在这句:
  1. for(i in (length(x)/2):1){
复制代码
已有 1 人评分经验 学术水平 收起 理由
Nicolle + 20 + 5 精彩帖子

总评分: 经验 + 20  学术水平 + 5   查看全部评分

藤椅
LEAONKAN 发表于 2015-3-27 16:29:41
统计与R语言咨询 发表于 2015-3-27 15:41
感觉你是不是应该用下面的代码:
谢谢!是这样的。顺带我还发现另一个程序的问题。

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

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