Java 字符串的排序列表?不使用长度函数查找列表的长度

Java 字符串的排序列表?不使用长度函数查找列表的长度,java,string,sorting,Java,String,Sorting,给定一个已排序的字符串列表,最后一个条目为空。您不能使用list.length来确定列表的长度,但可以使用一种比O(n)更有效的方法来查找列表的结束索引或列表的长度?听起来像是家庭作业 查看List.iterator()和迭代器接口。使用二进制搜索将得到O(logn) 所以只需搜索空条目:)又快又脏,但它应该可以完成任务 这就像一个猜测数字的场景。从任意大的数字开始 当密钥存在时,双击。抛出IndexOutOfBounds后,继续执行步骤2 这个索引存在吗? 是,然后将当前索引上方的下一个已知

给定一个已排序的字符串列表,最后一个条目为空。您不能使用list.length来确定列表的长度,但可以使用一种比O(n)更有效的方法来查找列表的结束索引或列表的长度?

听起来像是家庭作业


查看List.iterator()和迭代器接口。

使用二进制搜索将得到O(logn)


所以只需搜索空条目:)

又快又脏,但它应该可以完成任务

这就像一个猜测数字的场景。从任意大的数字开始

  • 当密钥存在时,双击。抛出IndexOutOfBounds后,继续执行步骤2
  • 这个索引存在吗?
    • 是,然后将当前索引上方的下一个已知数字之间的差值减半,并添加到当前索引中
    • 没有?然后将当前索引下方的下一个已知数字与当前数字之间的差值减半
  • 好消息是什么?这是O(logn)。坏消息是什么?您可能存在logn/2异常。

    简单:使用'List.size()'方法。Java“List”接口没有“length”字段或属性

    ;->


    闻起来像是家庭作业。到目前为止你试过什么?Stack Overflow社区很乐意提供帮助,但从未给出答案。有没有可能是家庭作业?我们可以使用什么?@Nico,我们一直在给出答案。“比O(n)更有效的方法”在英语中毫无意义。什么意思?“与”、“至少与”、“比”一样高效等@Nico A没有A的问答网站将一文不值;)那么,如果不能使用长度属性,从哪里开始搜索呢?你说得对。我没想到。所以我猜既然你必须从第一个元素开始,你根本不能使用二进制搜索,是吗?你仍然可以这样做。我不喜欢这几乎可以肯定是一个家庭作业问题,所以我不打算在这里发布答案,但如果你好奇并且想不出答案,请给我发个便条:)编辑:看起来有人确实发布了我所想到的方法。哦,这听起来像是O(logn),其中n=任意数,而不是列表的大小。从索引1开始,如果找到非空条目,则加倍。这样,它将是O(log(n)),其中n=列表大小。从索引0或1开始,如果是LinkedList,则加倍可能会很慢:每个“get”调用都是O(n)。(ArrayList.get是O(C),其中“C”是一个常量。)从Integer.MAX_值向下的二进制搜索可能会有同样的问题,因为每个“点击”都会花费高昂。但它不是链表,而是字符串或chr[]。