已排序数组的一部分被反转

Posted

技术标签:

【中文标题】已排序数组的一部分被反转【英文标题】:Part of a sorted array is reversed 【发布时间】:2015-09-02 04:57:55 【问题描述】:

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

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】:
    假设最终结果应该是升序的。运行一次算法。 检查输出是否真的在上升。如果是,我们就完成了;否,请执行 3。 回滚到原始输入,假设最终结果应该是递减的,运行一次算法。 检查输出是否真的下降。如果是,我们就完成了;如果否,则输入非法。

【讨论】:

以上是关于已排序数组的一部分被反转的主要内容,如果未能解决你的问题,请参考以下文章

这才是选择排序正确的打开方式

《剑指Offer:专项突破版》 - 链表部分 JavaScript 题解

Day4-快速排序和反转整数

需要排序的最短子数组的长度——是一个排序好的数组,中间某一部分被打乱了,让你找出打乱的那个子数组

数据结构 - 选择排序

排序算法系列——直接插入排序