Content-Length: 256689 | pFad | http://github.com/Akira13641/PasPDQSort

E3 GitHub - Akira13641/PasPDQSort: Orson Peters' PDQSort algorithm translated to Free Pascal.
Skip to content

Akira13641/PasPDQSort

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

32 Commits
 
 
 
 
 
 
 
 

Repository files navigation

PasPDQSort

This is a direct translation of Orson Peters' PDQSort algorithm from C++ to Free Pascal, with one difference in that the internally-used-in-some-cases HeapSort algorithm is a translation of the one found in Stjepan Glavina's Rust implementation of PDQSort.

Basic usage (in the ObjFPC syntax mode) is as follows:

program Example;

{$mode ObjFPC}

uses Math, PasPDQSort;

var
  I: PtrInt;
  A: array of Int32;

begin
  // generate a random array for example purposes.
  Randomize();
  SetLength(A, 500);
  for I := 0 to 499 do
    A[I] := RandomRange(1, 1001);

  // sort it!
  specialize TPDQSorter<Int32>.Sort(A);

  // Note: This implementation of the algorithm requires that the type being sorted
  // (that is, the one `TPDQSorter` is specialized with) has an existing
  // implementation of the "less than" operator for it, and will fail to compile
  // if handed something for which that is not the case.

  // In the above example, "less than" happens to be built into the language for `Int32`,
  // but user-defined custom implementations of the operator for custom types will also work fine.
end.

Compatible with Free Pascal 3.1.1 and higher.









ApplySandwichStrip

pFad - (p)hone/(F)rame/(a)nonymizer/(d)eclutterfier!      Saves Data!


--- a PPN by Garber Painting Akron. With Image Size Reduction included!

Fetched URL: http://github.com/Akira13641/PasPDQSort

Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy