永发信息网

下图堆排序 我想知道堆排序交换了多少回 n=5 (5个数) 例如 1 2 3 4 5 交换后 1

答案:1  悬赏:50  手机版
解决时间 2021-12-04 03:39
  • 提问者网友:最爱你的唇
  • 2021-12-03 04:18
下图堆排序 我想知道堆排序交换了多少回 n=5 (5个数) 例如 1 2 3 4 5 交换后 1
最佳答案
  • 五星知识达人网友:雪起风沙痕
  • 2021-12-03 05:25
如果只是测试看交换了多少次,设置的全局变量,初始化为0,然后把它放在swap函数里,实现每调用一次swap函数,就自加1,这样就可以记录交换的次数了。追问这样对不对?
交换了11回追答嗯,这是建堆跟排序总的交换次数。追问
开始时
从大到小或是
从小到大
都是11回 感觉不太对追答你要记录排序的交换次数,还是要记录建堆的交换次数。追问堆排序交换的次数
比冒泡排序交换的次数还多 对不对?排序的交换次数请问刚才出现的11是什么的交换次数?追答堆排序平均效率要比冒泡高。那个11是总的交换次数追问从1~5变成1~5为什么交换了11回追答记录排序的交换次数,把count++写在heapsort的for循环中试一试。追问
5? 0?追答你换成逆序再看看结果追问
追答这里好像有点问题,我想一想。追问麻烦您了追答在max_heapify函数的最后一个if里面也写上count++,在build_max_heap函数的for循环中写上count--这里也不好计算,这几个函数有共享区域,算出来结果不一定对。追问

追答这个数字应该也不是准确的。因为每一次循环都是一样的,必须要设置一个识别标志才行,能识别是建堆还是排序。追问对两个应该不可能一样排序最好两个可以分别表示
countp,countd追答你急不,不急的话私信把代码发给我,我晚上回来帮你改改,急得话再等其他人帮你弄一弄,我得出去了。用两个变量也可以,就是要分清什么时候该对它们的值进行改变。追问我不急代码是我写的内容吗?追答嗯,是的那你私信发给我,我晚上帮你弄一弄吧。追问知道了,一会儿发给您追答嗯
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯