【发布时间】:2020-02-27 10:53:12
【问题描述】:
目的是将数组的元素从左侧的正数和右侧的负数排列。约束是只能使用一个数组。此外,元素出现的顺序在排列的输出数组中应该保持不变。 样本输入
10(数组中的元素数) -6 7 13 10 -8 15 5 -9 2 -1(数组元素) 样本输出
7 13 10 15 5 2 -6 -8 -9 -1
【问题讨论】:
-
std::stable_partition正是针对这种情况而设计的。 -
既然你是新来的,你应该看看这个:softwareengineering.meta.stackexchange.com/questions/6166/…
-
@user3386109:这不是一个稳定的排序,而是一个稳定的分区。为什么编程语言很重要?
-
使用快速排序(查找算法),它只使用一个数组。
-
@Rhnbmpl 快速排序不稳定。尽管您可以修改 Quicksort 以使其稳定,但这是矫枉过正的。问题是对数组进行partition,而不是对其进行sort。分区是一个 O(n) 操作。排序是 O(n log n)。