打乱一个数组
时间: 2024-02-28 09:56:51 浏览: 82
数组随机打乱顺序方法
5星 · 资源好评率100%
打乱一个数组的算法可以采用 Fisher-Yates 洗牌算法,该算法的步骤如下:
1. 从数组的最后一个元素开始,依次遍历到第一个元素。
2. 对于当前遍历到的元素,随机生成一个[0, i]之间的整数j,其中i为当前元素的下标。
3. 将当前元素与下标为j的元素交换位置。
4. 继续遍历数组,直到遍历到第一个元素为止。
这个算法可以保证每个元素被随机打乱的概率相等,而且时间复杂度为O(n),非常高效。
下面是一个示例代码,演示如何用 Fisher-Yates 算法打乱一个数组:
```python
import random
def shuffle_array(arr):
n = len(arr)
for i in range(n - 1, 0, -1):
j = random.randint(0, i)
arr[i], arr[j] = arr[j], arr[i]
return arr
# 示例用法
arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
shuffle_array(arr)
print(arr)
```
这个示例代码中,我们首先定义了一个 `shuffle_array` 函数,它接受一个列表作为参数,然后使用 Fisher-Yates 算法打乱了这个列表。最后,我们演示了打乱前后这个数组的输出结果,可以看到它们是不同的。
阅读全文