老师,选择排序为什么要传入数组长度,而不是在排序算法里自动获取
来源:2-2 使用模板(泛型)编写算法
fengyunzhu
2020-07-26
输入正文
写回答
1回答
-
对于 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
继续加油!:)
112020-07-29
相似问题