Shuffle - оптимальнее

This commit is contained in:
Mikhalkovich Stanislav 2024-01-22 14:49:04 +03:00
parent b3990e304c
commit 087a00b636
6 changed files with 13 additions and 17 deletions

View file

@ -15,7 +15,7 @@ internal static class RevisionClass
public const string Major = "3";
public const string Minor = "9";
public const string Build = "0";
public const string Revision = "3418";
public const string Revision = "3419";
public const string MainVersion = Major + "." + Minor;
public const string FullVersion = Major + "." + Minor + "." + Build + "." + Revision;

View file

@ -1,4 +1,4 @@
%COREVERSION%=0
%REVISION%=3418
%MINOR%=9
%REVISION%=3419
%COREVERSION%=0
%MAJOR%=3

Binary file not shown.

View file

@ -1 +1 @@
3.9.0.3418
3.9.0.3419

View file

@ -1 +1 @@
!define VERSION '3.9.0.3418'
!define VERSION '3.9.0.3419'

View file

@ -8882,17 +8882,15 @@ end;
procedure Shuffle<T>(a: array of T);
begin
var n := a.Length;
for var i := 0 to n - 1 do
Swap(a[i], a[Random(n)]);
for var i := a.Length - 1 downto 1 do
Swap(a[i], a[Random(i + 1)]);
end;
procedure Shuffle<T>(l: List<T>);
begin
var n := l.Count;
for var i := 0 to n - 1 do
for var i := l.Count - 1 downto 1 do
begin
var ind := Random(n);
var ind := Random(i + 1);
var v := l[i];
l[i] := l[ind];
l[ind] := v;
@ -10756,10 +10754,9 @@ end;
/// Перемешивает элементы списка случайным образом
function Shuffle<T>(Self: List<T>): List<T>; extensionmethod;
begin
var n := Self.Count;
for var i := 0 to n - 1 do
for var i := Self.Count - 1 downto 1 do
begin
var r := Random(n);
var r := Random(i + 1);
var v := Self[i];
Self[i] := Self[r];
Self[r] := v;
@ -11814,9 +11811,8 @@ end;
/// Перемешивает элементы массива случайным образом
function Shuffle<T>(Self: array of T): array of T; extensionmethod;
begin
var n := Self.Length;
for var i := 0 to n - 1 do
Swap(Self[i], Self[Random(n)]);
for var i := Self.Length - 1 downto 1 do
Swap(Self[i], Self[Random(i + 1)]);
Result := Self;
end;