文档章节

混合排序小练习

涂孟超
 涂孟超
发布于 2014/09/26 15:35
字数 248
阅读 10
收藏 0

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;

本文转载自:http://www.cnblogs.com/del/archive/2011/12/31/2308656.html

共有 人打赏支持
涂孟超
粉丝 12
博文 2011
码字总数 14107
作品 0
深圳
程序员
关东升的《从零开始学Swift》3月9日已经上架

大家一直期盼的《从零开始学Swift》于3月9日已经上架,它是关东升老师历时8个月的呕心沥血所编著,全书600多页,此本书基于Swift 2.x,通过大量案例全面介绍苹果平台的应用开发。全书共分5 部...

tony关东升
06/26
0
0
SQLServer2012单表查询练习

表结构与数据:https://github.com/XuePeng87/TSQLV4 练习1 练习内容:编写一个对Sales.Orders表的查询,返回2015年6月的订单 涉及的表:Sales.Orders 输出的列:orderid, orderdate, custi...

杰克鹏仔
2016/11/10
0
0
SQLServer2012单表查询练习

表结构与数据:https://github.com/XuePeng87/TSQLV4 练习1 练习内容:编写一个对Sales.Orders表的查询,返回2015年6月的订单 涉及的表:Sales.Orders 输出的列:orderid, orderdate, custi...

巧乐兹
2016/10/28
24
0
关东升的《《从零开始学Swift》即将出版

大家好: 苹果2015WWDC大会发布了Swift2.0,它较之前的版本Swift1.x有很大的变化,所以我即将出版《从零开始学Swift》《从零开始学Swift》将在《Swift开发指南》第1版的基础上添加Swift2.0的...

智捷课堂
2015/08/17
0
0
关东升的《从零开始学Swift》3月9日已经上架

大家一直期盼的《从零开始学Swift》于3月9日已经上架,它是关东升老师历时8个月的呕心沥血所编著,全书600多页,此本书基于Swift 2.x,通过大量案例全面介绍苹果平台的应用开发。全书共分5 部...

智捷课堂
2016/03/11
43
0

没有更多内容

加载失败,请刷新页面

加载更多

Spring IOC 之 注册 BeanDefinition

获取 Document 对象后,会根据该对象和 Resource 资源对象调用 registerBeanDefinitions() 方法,开始注册 BeanDefinitions 首先调用 createBeanDefinitionDocumentReader() 方法实例化 Bean...

职业搬砖20年
11分钟前
1
0
Pycahrm左边出现一些bookmark的取消方法

pycharm 左边出一个对号或则一个0,放上去提示Bookmark 取消方法:按F11

鹏灬
14分钟前
0
0
JDK1.8使用Dubbo时需注意

Dubbo自带的很多包都比较旧了,其中的javassist在JDK1.8上运行会报错 而且错误通常比较诡异,javassist是编辑和创建Java字节码的类库,常见的错误会从spring中报出 解决办法: <dependency>...

火龙战士
16分钟前
1
0
Java 对Oracle数据库中的 BLOB类型 插入图片

package test;import java.io.BufferedInputStream;import java.io.FileInputStream;import java.io.PrintStream;import java.sql.Connection;import java.sql.DriverManager;......

青峰Jun19er
18分钟前
0
0
awk复习

10月22日任务 复习 awk调用外部变量 -v参数设置内部变量调用外部变量 [root@test awk]# a=44[root@test awk]# echo "ABCD" | awk -v GET_A=$a '{print GET_A}'44 更复杂的应用: [root@...

robertt15
26分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部