洗牌算法

打乱一个序列

暴力方法

每次生成一个随机数,然后将对应下标的原序列数添加到新数组中。同时应该有一个memo用来记录对应下标的数已经被选取。
时间复杂度O(n^2)。

原址

有一个memo指向原序列的尾部,作为标记。
每次生成一个随机数,然后每次从原序列中取一个,交换对应下标元素与memo指向元素。然后memo减一。
时间复杂度O(n)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 最近做音乐播放器,基本功能已实现,准备再写一个循环播放功能,其中涉及列表循环、单曲循环、随机循环。实现这几个功能本...
    _Dot912阅读 10,981评论 3 6
  • 大家好,我是IT修真院深圳分院第02期学员,一枚正直善良的web程序员。 今天给大家分享一下,修真院官网JS任务0...
    与其感慨路难行阅读 4,610评论 0 4
  • 完美洗牌算法 题目描述: 有个长度为2n的数组 {a1, a2, a3, ..., an, b1, b2, b3,...
    MinoyJet阅读 9,469评论 0 2
  • 字符实体 在HTML开发中,有些字符,不适于直接写出,如大于小于号;因此用:用>表示大于号>;用<表示...
    xiadada阅读 3,688评论 0 0
  • 1、 小Q跟我聊天,说起了研修班里的事情。研修班里有几个美女经常和男生打情骂俏,虽然他们都已经结婚了,可是并不妨碍...
    爱家心理阅读 5,292评论 0 1