排序数组的一部分是相反的

时间:2015-09-02 04:57:56

标签: c++ c arrays algorithm sorting

给定一个排序数组,其中一部分是相反的。我们需要完全排序。 例如:

ip - 2 4 5 7 13 11 9 14 19
op - 2 4 5 7 9 11 13 14 19

当我们知道给定数组是按升序还是降序排序时,它很容易解决。如果我们不知道顺序,如何解决它?

例如:

ip - 19 17 2 6 8 10 1
op - 19 17 10 8 6 2 1

当输入的第一部分按升序排列而剩余部分按降序排列时,也会出现歧义。在这种情况下,可以考虑输出任何顺序。

1 个答案:

答案 0 :(得分:0)

  1. 假设最终结果应该是升序。运行一次算法。
  2. 检查输出是否真的在上升。如果是,我们就完成了;如果不是,请转到3。
  3. 回滚到原始输入,假设最终结果应该是降序,运行算法一次。
  4. 检查输出是否真的下降。如果是,我们就完成了;如果不是,则输入是非法的。