Цифровая сортировка (DigidalSort)
Пусть нужно отсортировать массив по возрастанию, а на вход поступают числа в диапазоне [-100;100]. При этом их количество настолько большое, что не поможет даже быстрая сортировка. Выходом служит так называемая цифровая сортировка. Возьмем
a:array[-100..100] of integer
Предварительно обнулим его.
for i:=-100 to 100 do
a[i]:=0;
Или
fillchar(a,sizeof(a),0)
для пишущих на Delphi
Каждая ячейка a
будет хранить количество повторений числа i
Получаем:
[PAS]var
a:array[-100..100] of integer;
i,n,c,j:integer;
begin
readln(n);
for i:=1 to n do
begin
read(c);
inc(a[c]);
end;
for i:=-100 to 100 do
for j:=1 to a[i] do
write(i,' ');
readln
end.
Комментарии:
Нету комментариев для вывода...