问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

写一个算法完成对数组元素的打乱。用C#语言做

发布网友 发布时间:2024-10-09 01:59

我来回答

4个回答

热心网友 时间:2024-10-24 10:29

现实中我会直接用random_shuffle函数完成数组的打乱,各种语言基本上都有这个函数,可能名字有些差别。

如果一定要自己写,算法也很简单:
假设数组array长度为n。
用标准随机函数rand(n)生成[0, n-1]之间的一个随机数,将array[n-1]和array[rand(n)]交换,这样就把array[n-1]位置上的数确定了;
再将array[n-2]和array[rand(n-1)]交换,确定array[n-2]位置上的数;
再将array[n-3]和array[rand(n-2)]交换,确定array[n-3]位置上的数;
。。。。。。
最后将array[0]和array[rand(1)]交换(实际就是自己和自己交换),把array[0]确定了

这样生成的array[0..n-1]的数组是完全随机的乱序,且时间复杂度为O(n),空间复杂度为O(1)

我是纯手工输入啊!

热心网友 时间:2024-10-24 10:29

使用随机函数。假设数组长N
逻辑是这样的。你先建一个和数组一样长度的空数组。
建两个随机生成实例random
然后两个random分别随机产生一个0到N-1之间的数n,n'
第一个产生的用于去取源数组中从第一个还没有取过的数开始数到第n个还没有取过的数,把这个数取出。
第二个产生的随机数用于标示在第二个数组中,从第一个还没有被赋值的开始数,到n'那个位置,把刚取到的数赋值给它。

接下来,再用两个random分别产生一个0到n-2之间的数,重复以上过程。直到n-n结束。

热心网友 时间:2024-10-24 10:30

222

热心网友 时间:2024-10-24 10:30

function randomsort(a, b) {
return Math.random()>.5 ? -1 : 1;
}
//usage example
var arr = [1, 2, 3, 4, 5];
arr.sort(randomsort);
trace(arr);
//traces 4,3,1,5,2追问详细点

热心网友 时间:2024-10-24 10:29

现实中我会直接用random_shuffle函数完成数组的打乱,各种语言基本上都有这个函数,可能名字有些差别。

如果一定要自己写,算法也很简单:
假设数组array长度为n。
用标准随机函数rand(n)生成[0, n-1]之间的一个随机数,将array[n-1]和array[rand(n)]交换,这样就把array[n-1]位置上的数确定了;
再将array[n-2]和array[rand(n-1)]交换,确定array[n-2]位置上的数;
再将array[n-3]和array[rand(n-2)]交换,确定array[n-3]位置上的数;
。。。。。。
最后将array[0]和array[rand(1)]交换(实际就是自己和自己交换),把array[0]确定了

这样生成的array[0..n-1]的数组是完全随机的乱序,且时间复杂度为O(n),空间复杂度为O(1)

我是纯手工输入啊!

热心网友 时间:2024-10-24 10:29

使用随机函数。假设数组长N
逻辑是这样的。你先建一个和数组一样长度的空数组。
建两个随机生成实例random
然后两个random分别随机产生一个0到N-1之间的数n,n'
第一个产生的用于去取源数组中从第一个还没有取过的数开始数到第n个还没有取过的数,把这个数取出。
第二个产生的随机数用于标示在第二个数组中,从第一个还没有被赋值的开始数,到n'那个位置,把刚取到的数赋值给它。

接下来,再用两个random分别产生一个0到n-2之间的数,重复以上过程。直到n-n结束。

热心网友 时间:2024-10-24 10:30

222

热心网友 时间:2024-10-24 10:31

function randomsort(a, b) {
return Math.random()>.5 ? -1 : 1;
}
//usage example
var arr = [1, 2, 3, 4, 5];
arr.sort(randomsort);
trace(arr);
//traces 4,3,1,5,2追问详细点

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
临沂比较有名的男装品牌 呼伦贝尔市悦动网络科技有限公司怎么样? 呼伦贝尔中汇实业有限公司怎么样? 呼伦贝尔油玉不绝电子商务有限公司怎么样? 如何避免wps卡顿? 属鼠的男人找对象是属什么,属鼠的人和什么属相合 96年鼠的姻缘在哪年 属相相合年份运势提升 2024属鼠找对象属什么最佳 黑客攻击网站能报案吗 黑客攻击报案有用吗 奇瑞金融抵押什么 奇瑞金融抵押什么手续 怀孕胃胀气怎么缓解 全球首个因新冠病毒灭亡的“国家”,真的称得上是国家吗 听说牛肉膏致癌,还有人在猪肉上抹牛肉膏冒充牛肉是不是真的啊? 间接性头疼怎么处理?谢谢! 听说土豆炒牛肉有毒是真的吗 如何在excel中隐藏# N/ A错误显示? 如何汇聚碎片化的内容 一头叫唤的驴和跑着的老虎是什么成语 有哪个应用可以看戏曲 边伯贤线上演唱会记录 上海 杨浦区 哪个电信营业厅可以更换NFC sim卡?是否需要支付费用? 边伯贤在演唱会里用怪调唱lucky是那一场 ...在2009年7月分发布的关于审理民事案件若干问题的补充规定 ...帮我看看这张乙肝五项的化验单是怎么回事?是不是永远不会再感染乙肝... 被医院忽悠花了大几十检测乙肝抗体,就说我没有问题。帮我看看我这个报告... 遂宁净业禅院发展历史 我想发表诗歌散文,应该选择哪家报社 喜欢写些心情文字,属于散文吧,想投稿,不知道投向哪里... 打算在明年一月中旬入手HTC Legend(G6),请问价格大概在多少?(打算在上 ... 重装了win7系统,系统装好后在开机界面后就直接黑屏了,出来个移动框_百 ... C#如何从一个数组每一个元素中减去同一个实数,并显示出来 delllatituded620笔记本电脑发热怎么测量显卡温度 ArrayBlockingQueue方法摘要 我的电脑事DELL的 品牌机!!为什么什么测试温度的软件(Z武器,和超级兔子... 面试高频算法题汇总:字节跳动 Top21-40 DELL N4030 笔记本 显卡和CPU出场温度 ?(非游戏等忙碌状态) 《通用》两个字共有几画? 通字有几画啊? qq能查看以前的年度报告吗? 求这张图的原图谢谢 求这张图片的原图。谢谢 蜗牛会对农作物造成多大程度的损失? 蜗牛对农作物有害吗? 蜗牛对农作物有什么危害 今天我被我家狗咬留血了,留了一丁点血,就以小针眼那么大,刚才红了一... 蜗牛的医药价值能否抵消其对农作物的危害? 谢谢 大家帮帮忙翻译一下~~!! ...而且不让狗出门,伤口有针眼那么大,出了不到一滴血