重新排列数组元素

时间:2010-10-15 16:29:51

标签: c++ c arrays

不确定是否重复。给定具有前N个整数和下一个N个字符的数据结构。 A = i1 i2 i3 ... iN c1 c2 c3 ... cN。我需要一个就地算法来将元素重新排列为A = i1 c1 i2 c2 ... iN cN

3 个答案:

答案 0 :(得分:4)

您的问题相当于就地转换2xN矩阵。你可以在这里阅读理论:http://en.wikipedia.org/wiki/In-place_matrix_transposition

也许在2xN矩阵的特殊情况下,存在一个更简单的算法,但我无法想到。一般的想法是遵循排列的循环。

答案 1 :(得分:1)

我认为这是一个标准排序问题。

您只需要一个好的比较功能,然后使用qsort

您熟悉qsort吗? 您是否创建了可以与我们分享的任何比较功能?

修改
正如评论家指出的那样,qsortstd::sort和其他类似的例程需要相同大小的对象。由于该问题需要一个不同大小的int和chars数组,并且在C / C ++中不是严格可行的,因此需要更多信息。

这个数组究竟是如何声明的?彗星有多大,有多大?字符的存在是否意味着N限制在255?

再一次,一些代码真的帮助。

答案 2 :(得分:1)

这个问题似乎有3个问题。

  1. 在同一列表中插入两种类型的项目。有几种方法可以做到这一点,但它不会很漂亮。
  2. partition用于分隔字符和整数的数据。
  3. sort每个分区都可以订购字符和订单。