【问题标题】:C++ sort implementation with custom swap?使用自定义交换的 C++ 排序实现?
【发布时间】:2014-04-24 08:52:24
【问题描述】:

关于如何在 C++ 中一次对多个数组进行排序,有很多问题。答案总是相同的,即使用结构向量而不是多个数组。不幸的是,由于多种原因(I/O、部分 MPI 传输、矢量化单元的使用等),我不能这样做。此外,由于内存限制,我无法在排序后将结构数组转换为独立数组。我的问题是,是否存在任何可以与自定义交换(和自定义比较)操作一起使用的高效(n log n)排序算法的 C++ 实现?

(我仍然无法理解为什么 STL 中缺少这样的选项。显然,很多 C++ 程序员都在要求它。)

【问题讨论】:

  • 您可以针对您的类型专门化std::swap
  • 你问为什么不见了?好吧,在必须同时对两个数组进行排序的情况下,您多久运行一次.. ;)
  • @chirs:不确定它是否有效,请参阅stackoverflow.com/questions/14212701/…
  • @DanielLangr,说得好。
  • 您能否创建一个映射向量或数组,将您的排序索引映射到并行数组的实际索引?我相信您可以在带有自定义比较器的映射数组上使用std:sort

标签: c++ sorting swap


【解决方案1】:

您不能对数据进行精确排序,而只能对其他数组和自定义比较器进行索引。排序后,您将拥有已排序索引的数组,并且对于 O(n),您可以置换所有数组。

【讨论】:

  • 很遗憾,由于内存原因不能。请参阅我对上述 Fred Larson 评论的回答。
猜你喜欢
  • 2016-09-18
  • 1970-01-01
  • 1970-01-01
  • 2020-09-14
  • 1970-01-01
  • 1970-01-01
  • 2010-09-30
  • 2019-06-22
  • 1970-01-01
相关资源
最近更新 更多