打乱一个序列
暴力方法
每次生成一个随机数,然后将对应下标的原序列数添加到新数组中。同时应该有一个memo用来记录对应下标的数已经被选取。
时间复杂度O(n^2)。
原址
有一个memo指向原序列的尾部,作为标记。
每次生成一个随机数,然后每次从原序列中取一个,交换对应下标元素与memo指向元素。然后memo减一。
时间复杂度O(n)
打乱一个序列
每次生成一个随机数,然后将对应下标的原序列数添加到新数组中。同时应该有一个memo用来记录对应下标的数已经被选取。
时间复杂度O(n^2)。
有一个memo指向原序列的尾部,作为标记。
每次生成一个随机数,然后每次从原序列中取一个,交换对应下标元素与memo指向元素。然后memo减一。
时间复杂度O(n)