Sign in Join
Wiki copytemporary

Revision 2 of 3, by WikiArchive on 11-4-2026. The page as it is now.

Counting sort/fr

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

Contents

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 the Internet Archive kept it on 2023-03-22. 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.