gpt4 book ai didi

arrays - Big-Theta(n) 线性排序算法?

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:34:11 24 4
gpt4 key购买 nike

设计一个线性算法来重新排列给定的 n 个元素数组的元素,使其所有负数都在任何零之前,而所有零都在任何正数之前。它还应该是空间高效的,这样它不需要超过恒定数量的额外空间。

我想到的一切都比 O(n) 大得多,并且会喜欢一些技巧/提示/帮助/java 代码!

最佳答案

帮助?提示:Quicksort 的分区部分,枢轴为 0See this Wikipedia article , 寻找就地版本。


我刚刚意识到,如果您实现上面链接中给出的确切版本,如果您的欺骗为零,它可能无济于事。我的说法仍然正确,您需要使用快速排序的分区部分,但分区将由 Dutch National Flag problem 完成或三向分区。这是给你的伪代码

//assume index based 1A[1..n]p = 0q = n+1i = 1
while i < q if A[i] < 0 swap(i, ++p) else if A[i] > 0 swap(i, --q) else i++

时间复杂度: O(n)
空间复杂度:O(1)

关于arrays - Big-Theta(n) 线性排序算法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13005139/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com