【发布时间】:2020-01-28 22:00:42
【问题描述】:
我的列表首先是奇数元素,然后是偶数元素,所以奇数元素首先出现在列表中,然后是偶数元素。例如:
list = [5,99,3,7,111,13,4,24,4,8]
所以偶数元素在编号为 4 的奇数元素之后开始。以线性复杂度执行此操作会很简单,但它必须具有更好的复杂性,因此我想到了二进制搜索,但我不知道如何在这种情况下实现它。感谢帮助。
【问题讨论】:
-
使用二分搜索来确定它从哪个索引开始交换。您可以将偶数元素视为“太大”,将奇数元素视为“太小”。
-
如果问题仍然适用于 C++,那么
std::partition_point可以完成这项工作。 (有类似的例子)。 -
@ManojBanik 二进制搜索是 O(log n)
-
@Mitchel Paulin,我的错,我本来打算写 O(log n),谢谢指正。
标签: python algorithm list complexity-theory