我在面试中被问到这个问题,我给出了各种解决方案,但面试官并不相信。我有兴趣找到解决方案。请提出您的看法:
问:编写一个高效的数据结构来实现 ipod 中的 shuffle。它必须播放所有歌曲,每次以不同的随机顺序播放,同一首歌曲不应重复。 (大部分是 O(n))
面试后我想到了一个解决方案:我可以进行随机快速排序而不需要递归。我们随机选择 1 个主元 O(1),然后进行快速排序 O(n)。现在歌曲将按某种顺序排序,我会一直播放到最后。一旦到达终点,我将再次选择一个随机枢轴,并一次又一次地重复这个过程。
问候,
塞图
你想要的费舍尔-耶茨洗牌 http://en.wikipedia.org/wiki/Fisher%E2%80%93Yates_shuffle。请注意该页面上提到的实施错误,因为您当前接受的答案不符合其中之一。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)