Sign in Join
Wiki copytemporary

Counting sort/fr

English · Français

Le tri par comptage est algorithme de tri sur les entiers.

Propriété

unité UCountingSortExtra.pas

pascal

unit UCountingSortExtra;

interface

type
  // data type
  TItemCountingSort=integer;

// sort order
function IsAscendingCountingSort: boolean; inline;

implementation

// sort order
function IsAscendingCountingSort: boolean; inline;
begin
   result := true;
end;

end.

unité UCountingSort.pas

pascal

unit UCountingSort;

interface

uses
  UCountingSortExtra;

// sorting function
procedure CountingSort( var a: array of TItemCountingSort );

implementation

procedure CountingSort( var a: array of TItemCountingSort );
var
  min, max : TItemCountingSort;
  count_a  : array of integer;
  i, j, z  : integer;
begin
  min := high( a );
  max := min;
  for i := low( a ) to high( a ) do
    begin
      if a[ i ] < min then min := a[ i ];
      if a[ i ] > max then max := a[ i ];
    end;
  SetLength( count_a, max - min + 1);
  for i := 0 to ( max - min ) do count_a[ i ] := 0;
  for i := low( a ) to high( a ) do
    count_a[ a[ i ] - min ] := count_a[ a[ i ] - min ] + 1;
  if IsAscendingCountingSort then z:= low( a ) else z := high( a );
  for i := min to max do
     for j := 0 to ( count_a[ i - min ] - 1 ) do
       begin
         a[ z ] := i;
         if IsAscendingCountingSort then inc( z ) else dec( z );
       end;
end;

end.

Exemple d'emploi

pascal

uses
  UCountingSort

  ...

var

  a: array[0..100] of integer; 

begin

  ...

  CountingSort( a );

From the Free Pascal wiki, page "Counting sort/fr", as it stood on 2020-02-12 after a change by Trev, out of the wiki's dump of 2024-05-26. Copyright stays with the author who wrote it, according to the old wiki's Licensing page. If you have concerns about this material, message the admin.

Revision 3, last changed by WikiArchive .

Talk about this page

Nobody has opened a bench for this page yet. Sign in to open one.