我被要求编写伪代码并分析我的函数的运行时间。
我得到 2 个降序排列的数组和 1 个整数 k,然后被要求找出 2 个数组的并集中的第 k 个最大数。
我已经运行了我的代码,因为作业截止日期还没有过去,我不能在这里发布代码,对不起。
有一些缺陷,问题 1:我不知道我是否需要处理 k>sum(arraylen(a & b)) 之类的场景,或者如果给定 2 个数组为空的场景......说如果我必须,什么我应该使用返回值吗?-1?如果第 k 个最大的恰好是 -1 怎么办……我不确定。
问题2:当我试图获取数组的长度时,我使用了sizeof(ArrayA)/4,(C++),我的朋友指出: - 一方面,sizeof
可能不是伪代码的组成部分,所以我可能需要像 ArrayA.length() 一样使用 - 另一方面,如果我使用 length(),它将使我的算法采用 O(n) 而不是 O(k),因为数组需要完全通过自身才能获得长度。他的观点是真的吗?如果是,我应该如何修改我的代码,以便它可能是 O(k) ?请帮忙,
我很感激任何帮助。多谢。