楼主: tiantanshu
1700 3

[问答] 关于堆排序算法 [推广有奖]

  • 3关注
  • 3粉丝

博士生

60%

还不是VIP/贵宾

-

威望
0
论坛币
878 个
通用积分
5.2910
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
9688 点
帖子
222
精华
0
在线时间
384 小时
注册时间
2011-3-3
最后登录
2022-9-5

楼主
tiantanshu 发表于 2014-6-25 09:25:38 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
用R语言可以实现堆排序算法吗?
哪位大神能帮我写一下程序呢?或者有现成的包呢?

二维码

扫码加我 拉你入群

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

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

关键词:R语言 程序

沙发
DM小菜鸟 发表于 2015-1-15 16:39:59
完全二叉树啊rpart包吧
详细说明:
http://cran.rstudio.com/web/packages/rpart/rpart.pdf

藤椅
DM小菜鸟 发表于 2015-1-15 17:03:03
不过如果要是Python的话,自己写的话,
#!/usr/bin/python
import sys

def left_child(node):
return node * 2 + 1


def right_child(node):
return node * 2 + 2


def parent(node):
if (node % 2):
return (i - 1) / 2
else:
return (i - 2) / 2


def max_heapify(array, i, heap_size):
l = left_child(i)
r = right_child(i)


largest = i
if l < heap_size and array[l] > array:
largest = l


if r < heap_size and array[r] > array[largest]:
largest = r


if largest != i:
array, array[largest] = array[largest], array
max_heapify(array, largest, heap_size)

def build_max_heap(array):
for i in range(len(array) / 2, -1, -1):
max_heapify(array, i, len(array))

def heap_sort(array):
build_max_heap(array)
for i in range(len(array) - 1, 0, -1):
array[0], array = array, array[0]
max_heapify(array, 0, i)

if __name__ == "__main__":
array = [0, 2, 6, 98, 34, -5, 23, 11, 89, 100, 7]
heap_sort(array)

for a in array:
sys.stdout.write("%d " % a)


板凳
tiantanshu 发表于 2015-1-15 18:04:42
DM小菜鸟 发表于 2015-1-15 17:03
不过如果要是Python的话,自己写的话,
#!/usr/bin/python
import sys
太厉害了,谢谢谢谢

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

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