#楼主# 2021-12-4

跳转到指定楼层
堆排序C++实现
分享淘帖
回复

使用道具

7

主题

19

帖子

508

积分

村民

Rank: 4

积分
508
杜撰人物伪 发表于 2021-12-4 08:12:17
STL自带了一个堆priority_queue,还有一套可以用来把迭代器指定的range当堆操作的通用算法在<algorithm>头里,make_heap、push_heap、pop_heap、sort_heap那几个,如果堆可以满足需求就不要用set/multiset,树结构需要多次堆分配而且不如连续存储cache friendly
回复

使用道具 举报

10

主题

21

帖子

523

积分

村民

Rank: 4

积分
523
关山瞻月蒲tg 发表于 2021-12-4 08:12:36
好的,谢谢
回复

使用道具 举报

5

主题

17

帖子

435

积分

青年

Rank: 3Rank: 3

积分
435
还入杰术运 发表于 2021-12-4 08:13:01
写的很好了已经,不过0节点打头的还是比较少见
回复

使用道具 举报

59

主题

36

帖子

606

积分

村民

Rank: 4

积分
606
stree_c19e 发表于 2021-12-4 08:13:52
i = 0开始的啊...
回复

使用道具 举报

7

主题

11

帖子

457

积分

青年

Rank: 3Rank: 3

积分
457
凹中有凸霉 发表于 2021-12-4 08:14:03
我把n改成了length
回复

使用道具 举报

51

主题

63

帖子

665

积分

村民

Rank: 4

积分
665
495175557 发表于 2021-12-4 08:14:42
如果是为学习堆排序算法,为什么要用set/multiset、priority_queue?如果用了优先队列或者平衡树,先把元素加进去,再按顺序弹出,元素就有序了,何必排序?
可以自己把待排序的数组建立成堆,再自己实现下滤等堆排序内部的算法,这些才是堆排序的精髓
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册 微信登录

本版积分规则

关于作者

孙圣洁

村民

  • 主题

    57

  • 帖子

    43

  • 关注者

    1

Archiver|手机版|小黑屋| 宝宝村 | 赣ICP备19014419号-1 |网站地图
Powered by baobaocun.com!  © 2019-2020版权所有宝宝村