算法大比拼,类型数组如何实现乱序排列

FlowerJunjie 2009-07-15 02:01:10
加精
我有一个
MyClass[] myClassList

如何打乱数组的顺序呢,随机的,求简洁或最优算法

ps:MyClass类中当然有个唯一标示属性。即GUID.
...全文
2267 75 打赏 收藏 转发到动态 举报
写回复
用AI写文章
75 条回复
切换为时间正序
请发表友善的回复…
发表回复
jingjing_ge 2010-07-25
  • 打赏
  • 举报
回复
路过,学习哈……
专爆菜鸟 2010-07-24
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 sp1234 的回复:]
引用 8 楼 vwxyzh 的回复:
C# codeMyClass[] myClassList= ...;byte[] keys=newbyte[myClassList.Length];
(new Random()).NextBytes(keys);
Array.Sort(keys, myClassList);


进行Sort没有必要!选择两个[0...myClassList.Len……
[/Quote]
支持
zhang3310028 2010-04-28
  • 打赏
  • 举报
回复
我的perl实现:
sub randomArray() {
my $ra_array = shift;
for ( my $i = 0 ; $i < @$ra_array ; $i++ ) {
my $index = int( rand(@$ra_array) );
@$ra_array[ $i, $index ] = @$ra_array[ $index, $i ];
}
}
金幄科技 2009-07-24
  • 打赏
  • 举报
回复

AssignListArray(array, LENGTH);
for (int i=LENGTH; i>=0; i--)
{
int index = rand() % i;
int tmp = array[i];
array[i] = array[index];
array[index] = tmp;
}

skynfly 2009-07-23
  • 打赏
  • 举报
回复
UP
清晨的老巢 2009-07-23
  • 打赏
  • 举报
回复
RANDOMIZE-IN-PLACE(A)
1 n ← length[A]
2 for i ← to n
3 do swap A[i] ↔ A[RANDOM(i, n)]

taotaojava 2009-07-20
  • 打赏
  • 举报
回复
学习一下
haorenhl007 2009-07-20
  • 打赏
  • 举报
回复
T MyArray = new T{...};
int i = 0;
int index;
Random random = new Random();
T temp;

while (i < MyArray.Length)
{
index = random.Next(MyArray.Length - i);
temp = MyArray[index];
MyArray[index] = MyArray[MyArray.Length - i];
MyArray[MyArray.Length - i] = temp;
i ++;
}
wocaonimadecoubi 2009-07-20
  • 打赏
  • 举报
回复
我只是拾人牙慧而已。
acdseeqq 2009-07-20
  • 打赏
  • 举报
回复
我的理解线性同余算法就是产生伪随机数,相当于自己做randowm,哪位大虾给我说说怎么用线性同余来优化这道题?
acdseeqq 2009-07-20
  • 打赏
  • 举报
回复
ArrayList^ myList=gcnew ArrayList;
//乱序
int i ,j;
Random^ myRandom=gcnew Random;
Object^ tem;
for(i=0;i< myList ->Count ;i++)
{
j= myRandom->Next (i,myList->Count );
tem= myList[i];
myList[i]=myList[j];
myList[j]=tem;
}
花落无痕IT 2009-07-20
  • 打赏
  • 举报
回复
有没有java 的写法呢!?
花落无痕IT 2009-07-20
  • 打赏
  • 举报
回复
有没有java 的写法呢!?
lfq08063440 2009-07-19
  • 打赏
  • 举报
回复
用到排序的算法都不是高效的基于比较的排序算法的时间下界是O(n×log(n));
用随机交换的的算法可以在线型时间完成。
benzite 2009-07-19
  • 打赏
  • 举报
回复
白用C#写了这么长时间程序了,看此贴简直就是雾里看花,只有学习的份,顶,以后好好学算法。
玖伍叁柒 2009-07-19
  • 打赏
  • 举报
回复
[Quote=引用 41 楼 superdullwolf 的回复:]
不知道线性同余法则的同学,拿刀自己叉一下自己,两个人都不知道的互相插一下。
[/Quote]

插一下的路过
wzyzb 2009-07-19
  • 打赏
  • 举报
回复

回帖是一种美德
Snakebite1985 2009-07-19
  • 打赏
  • 举报
回复
同楼上,参见《算法导论》第2版第5章的 RANDOM-PERMUTATION 算法
zzmoutmans 2009-07-19
  • 打赏
  • 举报
回复
回帖是一种美德
mylzc 2009-07-19
  • 打赏
  • 举报
回复
用扑克洗牌算法吧
加载更多回复(54)
下载代码方式:https://pan.quark.cn/s/dd3561eca308 在软件开发领域,面向对象编程(OOP)是一种普遍采纳的结构化方法,它使得开发者能够借助模拟现实环境中的实体和关系来构建软件系统。在本案例中,我们观察到的是一个关于借助抽象类来执行不同几何图形面积求解的实践应用。现在,让我们详细分析这一议题。 标题 "应用抽象类计算面积" 清晰地表明我们将要讨论一个抽象类,此类设定了一个用于测量图形面积的标准函数,但并未提供实际的执行过程。抽象类在诸如C#或Java等编程语言中通常借助`abstract`修饰符进行声明,它们无法直接创建对象实例,仅能作为其他类的基础模板。 描述部分提及的"图形界面应用"暗示这是一个基于视觉用户界面(GUI)的系统,可能运用了.NET Framework的Windows Forms或WPF技术,或者是Java平台的Swing或JavaFX框架。在这样环境下,用户能够通过视觉元素与这些几何体进行互动,例如输入相关尺寸并观看到计算得出的面积值。 抽象类“几何体”内嵌了“计算面积”这一抽象函数。在代码层面,这可以被表述为: ```csharp public abstract class GeometricShape { public abstract double CalculateArea(); } ``` 随后,有三个派生类:圆(Circle)、矩形(Rectangle)和三角形(Triangle),它们各自提供了这个抽象函数的具体实现。比如,圆的面积是通过π乘以半径的平方得到的,矩形的面积是长和宽的乘积,而三角形的面积可能是底乘以高再除以2的结果。这些类将提供具体实现来计算它们各自的面积: ```csharp p...
内容概要:本文系统研究了移相控制全桥LLC谐振变换器的工作特性,深入分析其在不同工作模式下的运行机理与性能表现,重点探讨了软开关实现、高效率能量转换及宽范围电压调节等关键技术优势。通过Simulink搭建精确的仿真模型,对谐振腔参数、开关频率、电压增益、系统效率等关键指标进行仿真分析,验证了理论设计的正确性。同时,详细研究了移相控制策略对系统动态响应、稳定性和轻载/重载工况适应性的影响,揭示了控制参数与电路参数之间的耦合关系,为高频高效电源设计提供了理论依据和实践指导。; 适合人群:具备电力电子技术、模拟电路及自动控制理论基础,从事开关电源、新能源变换器、电动汽车充电模块或高频电源系统研发的工程师及高校研究生。; 使用场景及目标:①掌握全桥LLC谐振变换器的拓扑结构、工作原理与关键参数设计方法;②理解移相控制在实现零电压开通(ZVS)和零电流关断(ZCS)中的作用机制;③通过Simulink仿真掌握变换器建模、参数优化与性能评估流程,服务于实际产品开发与学术课题研究。; 阅读建议:建议读者结合提供的Simulink仿真模型进行同步操作,重点关注谐振网络(Lr, Lm, Cr)参数与移相角之间的匹配设计,深入理解软开关条件的形成过程,并通过调整负载和输入电压进行多工况仿真,以全面掌握系统动态特性。

111,129

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧