假设您有一个未排序的正整数列表,并且希望按以下顺序对它们进行排序:(小于前一个元素),(大于前一个元素),(小于前一个元素),等等... 输出列表中的第一个元素可以忽略规则。例如,假设您的列表是:1,4,9,2,7,5,3,8,6。
一种正确的输出方式是... 1,9,2,8,3,7,4,6,5
另一种方式是... 3,4,2,7,5,6,1,9,8
假定列表不包含重复项,任意大,且未排序。
最高效的处理该问题的算法是什么?
标准方法是首先按升序对列表进行排序,然后交替地从列表的两端获取元素。然而,我想知道:是否有更节省时间的方法可以在不先对列表进行排序的情况下完成此操作?
我的提问原因:(只有在您关心的情况下才阅读此内容)
显然,这是我妹妹男友在旧金山的面试中向人们提出的问题。 我妹妹问了我这个问题,我立即想到了标准答案。 那就是每个人都会回答的。 然而,显然有一个女孩想出了一个完全不需要对列表进行排序的解决方案,看起来它可以工作。 我妹妹无法向我解释这个解决方案,但从昨晚开始,这个想法一直让我感到困惑。 我会非常感激任何帮助! 谢谢!
一种正确的输出方式是... 1,9,2,8,3,7,4,6,5
另一种方式是... 3,4,2,7,5,6,1,9,8
假定列表不包含重复项,任意大,且未排序。
最高效的处理该问题的算法是什么?
标准方法是首先按升序对列表进行排序,然后交替地从列表的两端获取元素。然而,我想知道:是否有更节省时间的方法可以在不先对列表进行排序的情况下完成此操作?
我的提问原因:(只有在您关心的情况下才阅读此内容)
显然,这是我妹妹男友在旧金山的面试中向人们提出的问题。 我妹妹问了我这个问题,我立即想到了标准答案。 那就是每个人都会回答的。 然而,显然有一个女孩想出了一个完全不需要对列表进行排序的解决方案,看起来它可以工作。 我妹妹无法向我解释这个解决方案,但从昨晚开始,这个想法一直让我感到困惑。 我会非常感激任何帮助! 谢谢!