老师,问个堆排序的问题

来源:4-5 基础堆排序和Heapify

我会回来的333

2021-05-15

图片描述
老师我发现我的代码都是用的int类型数据做的排序数据,所以我花了两天把我的代码全部做了调整,改为了试用于所有引用数据类型数据排序的代码,但是改到堆排序的时候,这里没看明白,为啥Comparable接口还能实例化呢?老师您写的那个Item类型是可以看做一个类型变量T吧??
图片描述
图片描述
这真的没看懂,这是啥语法啊这菱形括号里还能写接口?,老师,晕了,代码倒是测试能过,heapify优化了也能测试过,老师我heapify写成这样了,
图片描述
最后测试结果还是heapify快的
老师求详细解答,另外问一下这么设置类型的话是不是所有引用数据类型的数据都可以用这种排序方法排序了?

写回答

2回答

liuyubobobo

2021-05-15

这就是多态性。另外,我们实例化的不是 Comprable,而是 Comparable[]。这是不一样的。这表示我们创建了一个 Comparable 的数组,数组中的所有元素都实现了 Comprable 接口。


由于基于比较的排序算法,其作用的对象肯定实现了 Comparable 接口(否则无法比较,也就无法排序),所以可以使用 Comparable[] 存储所有的元素。


继续加油!:)

1
2
我会回来的333
非常感谢!
2021-05-16
共2条回复

我会回来的333

提问者

2021-05-16

//img.mukewang.com/szimg/609ffea209fd65af07630660.jpg

//img.mukewang.com/szimg/609ffec009ed6b8808240522.jpg

//img.mukewang.com/szimg/609ffee609079a6206980668.jpg

这样就是让Comparable[]数组中的每个Comparable的comp以多态的形式存内存地址,然后输出的时候多态的形式一个一个输出,这样还是原来的数据类型,这样行吗?我测试过了,好像也可以,没报错 

我用这样做的类型检查

//img.mukewang.com/szimg/60a001ea09d7eeaa07210295.jpg

//img.mukewang.com/szimg/60a001a5099f2d8207840609.jpg

0
1
liuyubobobo
我没有特别搞懂你的目的。isSorted 只传入 Integer[] 当然可以,但也就只能验证 Integer[] 了。
2021-05-16
共1条回复

算法与数据结构(C++版) 面试/评级的算法复习技能包

课程专为:短时间内应对面试、升职测评等艰巨任务打造

11187 学习 · 1614 问题

查看课程