46 lines
878 B
ObjectPascal
46 lines
878 B
ObjectPascal
|
program CountingSort;
|
||
|
|
||
|
var
|
||
|
n, i: integer;
|
||
|
ini_arr, sorted_arr: array[0..9] of integer;
|
||
|
|
||
|
procedure countingsort;
|
||
|
var
|
||
|
i, j, k, jj: integer;
|
||
|
count_arr: array[0..9] of integer;
|
||
|
begin
|
||
|
for k := 0 to n - 1 do
|
||
|
count_arr[k] := 0;
|
||
|
for i := 0 to n - 1 do
|
||
|
count_arr[ini_arr[i]] := count_arr[ini_arr[i]] + 1;
|
||
|
for k := 1 to n - 1 do
|
||
|
count_arr[k] := count_arr[k] + count_arr[k - 1];
|
||
|
for j := 0 to n - 1 do
|
||
|
begin
|
||
|
jj := n - j;
|
||
|
count_arr[ini_arr[jj - 1]] := count_arr[ini_arr[jj - 1]] - 1;
|
||
|
sorted_arr[count_arr[ini_arr[jj - 1]]] := ini_arr[jj - 1];
|
||
|
end;
|
||
|
end;
|
||
|
|
||
|
begin
|
||
|
n := 10;
|
||
|
ini_arr[0] := 4;
|
||
|
ini_arr[1] := 3;
|
||
|
ini_arr[2] := 9;
|
||
|
ini_arr[3] := 2;
|
||
|
ini_arr[4] := 0;
|
||
|
ini_arr[5] := 1;
|
||
|
ini_arr[6] := 6;
|
||
|
ini_arr[7] := 5;
|
||
|
ini_arr[8] := 7;
|
||
|
ini_arr[9] := 8;
|
||
|
|
||
|
countingsort;
|
||
|
|
||
|
for i := 0 to n - 1 do
|
||
|
begin
|
||
|
write(sorted_arr[i]);
|
||
|
end;
|
||
|
end.
|