「算法」随机打乱数组顺序

引言

给你一个数组,比如 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 条评论)
   
验证码:

相关文章

推荐文章

'); })();