算法_shuffle 洗牌算法 - zen0822/interview GitHub Wiki

洗牌算法

实现流程

  1. 初始化原始数组和新数组,原始数组长度为n(已知);

  2. 从还没处理的数组(假如还剩k个)中,随机产生一个[0, k)之间的数字p(假设数组从0开始);

  3. 从剩下的k个数中把第p个数取出;

  4. 重复步骤2和3直到数字全部取完;

  5. 从步骤3取出的数字序列便是一个打乱了的数列。

时间复杂度为O(n*n),空间复杂度为O(n).

使用场景

  • 打乱数组顺序