给你一个数组,比如 arr = [1,3,5,7,9,10],要求随机输出这个数组,怎么搞?
以下都是PHP代码
取一个基准元素,一般是最后一个元素,先用mt_rand生成0到length-1(数组长度)的索引值,用其值和基准元素进行交换,然后length--,直到最后一个元素。
代码示例
$arr = [1, 3, 5, 7, 10];
function _shuffle($arr)
{
$length = count($arr) - 1;
while ($length > 1) {
$index = mt_rand(0, $length - 1);
$tmp = $arr[$length];
$arr[$length] = $arr[$index];
$arr[$index] = $tmp;
$length--;
}
return $arr;
}
var_dump(_shuffle($arr));
时间复杂度:O(N)
留言与评论(共有 0 条评论) |