在限定时间复杂度O(n),空间复杂度O(1)条件下,对数组排序。要求大于0元素的在数字0左边,小于

2025-04-07 22:43:41
推荐回答(2个)
回答(1):

不知道数字的总量吗?
是否队首队尾指针相等,是则结束循环。
如果队首小于0,则观察队尾。
队尾大于0,则交换队首队尾。小于则,队尾保留,向队首移动1个比较直至可以交换。
等于0则

如果队尾指针为下一个队首指针的位置,则只比较和交换。
否则,交换该元素和其下一个元素。且不移动队尾指针。
如果队首大于0,则向队尾移动1个继续比较。

如果队首等于0,
如果队尾指针为下一个队首指针的位置,则只比较和交换。
否则,交换该元素和其下一个元素。且不移动队首指针。

由于0元素的存在和无法确定的数组长度,导致我想出来的这个破东西的时间复杂度大概是n+n/2
好像还是算作n的。

回答(2):

大神大声的告诉我什么排序方法的平均时间复杂度是O(n)?