2011 年的最后一天了...
混合排序 -> 搅乱、重新洗牌; 以 Integer 动态数组为例.
//两个辅助函数 Swap、ToStr, 分别用于交换数组元素和呈现为字符串 procedure Swap(var Arr: TArray<Integer>; a,b: Cardinal); var tmp: Integer; begin if (a >= Length(Arr)) or (b >= Length(Arr)) or (a = b) then Exit; tmp := Arr[a]; Arr[a] := Arr[b]; Arr[b] := tmp; end; function ToStr(const Arr: TArray<Integer>): string; var n: Integer; begin for n in Arr do Result := Result + IntToStr(n) + sLineBreak; end; //----------------------------------------------------------------- {1、简单反排序} procedure SimpleShuffle(var Arr: TArray<Integer>); var r,i: Integer; //分别用作随机索引、遍历索引 begin for i := 0 to Length(Arr) - 1 do begin r := Random(Length(Arr)); Swap(Arr, i, r); end; end; {2、好的反排序} procedure GoodShuffle(var Arr: TArray<Integer>); var r,i: Integer; begin for i := Length(Arr) - 1 downto 0 do begin r := Random(i + 1); if r <> i then Swap(Arr, i, r); end; end; {测试} procedure TForm1.Button1Click(Sender: TObject); var arr1,arr2: TArray<Integer>; begin arr1 := TArray<Integer>.Create(0, 1, 2, 3, 4, 5, 6, 7, 8, 9); // arr2 := Copy(arr1); // // SimpleShuffle(arr2); GoodShuffle(arr2); Memo1.Text := ToStr(arr1); Memo2.Text := ToStr(arr2); end;
分类:
点点滴滴-日积月累
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
2010-12-31 学用 ASP.Net 之 "字符串" (4): string 类的扩展方法
2009-12-31 GdiPlus[58]: 图像(十) IGPMetafile 特有的属性与方法
2009-12-31 GdiPlus[57]: 图像(九) IGPBitmap 特有的属性与方法
2008-12-31 C# 语法练习(6): 枚举
2008-12-31 显示系统托盘列表(并执行隐藏与显示) - 回复 "anybet" 的问题
2007-12-31 Addr 函数 - 获取对象指针
2007-12-31 AbstractErrorProc - 抽象错误处理的指针