java生成洗牌算法
时间: 2023-07-10 18:04:02 浏览: 107
Java生成洗牌算法可以使用Collections.shuffle()方法。
该方法可以接受一个List类型的参数,并会随机打乱该列表中元素的顺序。以下是一个示例代码:
```
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class ShuffleAlgorithm {
public static void main(String[] args) {
List<Integer> list = new ArrayList<>();
for (int i = 1; i <= 10; i++) {
list.add(i);
}
System.out.println("原始列表:" + list);
Collections.shuffle(list);
System.out.println("洗牌后的列表:" + list);
}
}
```
运行该程序将输出如下结果:
```
原始列表:[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
洗牌后的列表:[10, 7, 9, 5, 2, 6, 8, 3, 1, 4]
```
你也可以自己实现洗牌算法,以下是一种常见的洗牌算法:
```
public static void shuffle(List<?> list) {
Random rnd = ThreadLocalRandom.current();
for (int i = list.size(); i > 1; i--)
swap(list, i - 1, rnd.nextInt(i));
}
public static <E> void swap(List<E> list, int i, int j) {
E tmp = list.get(i);
list.set(i, list.get(j));
list.set(j, tmp);
}
```
该算法使用了Fisher-Yates算法,它的时间复杂度为O(N)。
阅读全文