老师,选择排序为什么要传入数组长度,而不是在排序算法里自动获取

来源:2-2 使用模板(泛型)编写算法

fengyunzhu

2020-07-26

输入正文

写回答

1回答

liuyubobobo

2020-07-26

对于 C++ 语言,对于 T[] 类型数组的长度,使用 sizeof(arr) / sizeof(T) 的方式在子函数中求数组长度是失效的。因为传参过程,会将 T[] 转换成 T*。可以试试看?


如果使用 vector 这类数据结构,或者在 Java,Python 等语言中,不存在这个问题,可以直接传数组。传输组 + 长度其实是非常标准的 C 语言设计方式。在 C++ 语言中,如果直接使用 vector,就不存在这个问题了。


对于这个课程的 Java,我设计的接口将不再有数组长度,就是因为对于 Java  语言来说,直接获取数组长度是方便的,可以参考这里:https://git.imooc.com/coding-71/coding-71/src/master/02-Sorting-Basic/Course%20Code%20%28Java%29/02-Selection-Sort-Using-Comparable/src/bobo/algo/SelectionSort.java


继续加油!:)

1
1
fengyunzhu
非常感谢!
2020-07-29
共1条回复

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

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

11187 学习 · 1614 问题

查看课程