如果我们给出一个已排序的数组,那么我们可以使用什么算法创建一个与排序数组具有相同元素的输出数组,但元素应该随机洗牌。我正在寻找一种复杂度为O(n)的算法将一个排序后的数组重新排序
3
A
回答
10
Collections.shuffle(List)
的时间复杂度为O(n)
。您可以使用Arrays.asList()
来包装数组,以便使用此功能。
它的功能是什么;
对于从最后一个元素到第二个元素的每个元素,用包含它自身的其余列表中的随机元素交换元素,即它可以随机地不移动元素。
for (int i=size; i>1; i--)
swap(list, i-1, rnd.nextInt(i));
3
您可以使用此代码
// Create a list
List list = new ArrayList();
// Add elements to list
// Shuffle the elements in the list
Collections.shuffle(list);
// Create an array
String[] array = new String[] { "a", "b", "c" };
// Shuffle the elements in the array
Collections.shuffle(Arrays.asList(array));
for (int i = 0; i < array.length; i++) {
System.out.println("Count is: " + i + " letter is " + array[i]);
}
这将打印出类似这样:
计数:0字母为b
计数为:1个字母是
计数是:2字母是c
from http://www.exampledepot.com/egs/java.util/coll_Shuffle.html
相关问题
- 1. 使用Javascript:排序数组后,重新排序比较
- 2. 重新排序JavaScript数组
- 3. 重新排序int数组
- 4. 数组重新排序
- 5. php重新排序数组
- 6. 排序与选择一个几乎排序后的数组
- 7. 将一个链表重新排序
- 8. style排序后改变数组排序
- 9. 重新排序数组的PHP函数
- 10. 如何重新排序的数组在Java中未排序?
- 11. 排序jquery后重新排列子div
- 12. 排序数组与另一个数组的排序iphone sdk
- 13. 根据另一个数组的排序索引排序数组
- 14. 重新排序以相同的顺序数组作为另一个阵列重新排序
- 15. 重新排序/重新排列多维数组
- 16. PHP数组的键重新排序
- 17. 重新排序的数组元素
- 18. numpy数组的重新排序
- 19. 排序一个bash数组
- 20. PHP排序一个数组
- 21. 排序在一个数组
- 22. 排序一个numpy数组
- 23. 排序一个Javascript数组
- 24. 重新排序数组而不加扰原始排序
- 25. 重新排序(不排序)关联数组?
- 26. 重新排序
- 27. 排序后的排序/组结果
- 28. jQuery的排序重新排序
- 29. jQuery的 - 重新排序排序负载
- 30. 将DataFrame行重新排序