Поразрядная сортировка - Pascal

Узнай цену своей работы

Формулировка задачи:

НУжна порграмма для сотировки массива с помощью поразрядной сортировки(Верхнюю границу сортируемого масива установите Константой пож т.к. мне потом надо будет посмотреть как работает RAdix сорт по сравнению с остальными).

Решение задачи: «Поразрядная сортировка»

textual
Листинг программы
Program laba10a;
var
 a,ai:array [1..100] of integer;
 c:array [0..9] of string[100];
 i,n,l,li,j,s,k,h,b:integer;
 m:string;
begin
 Writeln('BBedute kolu4ecTBo eleMeHToB maccuBa');
 readln(n);
 for i:=1 to n do
 begin
  Write('a[' ,i,']=');
  readln(a[i]);
 end;
 for i:=1 to n do
  ai[i]:=a[i];
 Writeln('maccuB do coptuPoBKu');
 for i:=1 to n do
  write(a[i], ' ');
 l:=0;
 b:=a[1];
 while b>0 do
 begin
  inc(l);
  b:=b div 10;
 end;
 for i:=1 to n do
 begin
  li:=0;
  b:=a[i];
  while b>0 do
  begin
   inc(li);
   b:=b div 10;
  end;
  if li>l then
   l:=li;     {l caMblu boLbLLIou pa3p9D}
  end;
 li:=1;
 for j:=l downto 1 do
 begin
  for i:=1 to n do
  begin
   b:=a[i] div li mod 10;
   str(i,m);
   c[b]:=c[b]+m+' ';
  end;
  li:=li*10;
  s:=1;
  for i:=0 to 9 do
  begin
   while pos(' ',c[i])>0 do
   begin
    m:=copy(c[i],1,pos(' ',c[i])-1);
    val(m,b,h);
    a[s]:=ai[b];
    inc(s);
    delete(c[i],1,pos(' ',c[i]));
    m:='';
   end;
   c[i]:='';
  end;
  for i:=1 to n do
   ai[i]:=a[i];
 end;
 Writeln('noLy4uBLLIEuc9 macuB');
 for i:=1 to n do
  Write(a[i], ' ');
 readln
end.

Объяснение кода листинга программы

  1. Создается программа lab10a.
  2. Объявляются переменные: a, ai, c, i, n, l, li, j, s, k, h, b, m.
  3. Выводится сообщение BBedute kolu4ecTBo eleMeHToB maccuBa.
  4. Считывается значение переменной n.
  5. Для каждого i от 1 до n выводится сообщение a[i]=.
  6. Значение каждого i считывается в переменную a[i].
  7. Выводится сообщение maccuB do coptuPoBKu.
  8. Для каждого i от 1 до n выводится значение a[i].
  9. Вычисляется значение l как наибольшего показателя степени 10, который встречается в a[i].
  10. Значение l присваивается переменной l.
  11. Значение a[1] присваивается переменной b.
  12. Пока b больше 0, выполняется цикл.
  13. В цикле увеличивается значение l на 1.
  14. Значение b делится на 10 и результат присваивается переменной b.
  15. Если li (количество цифр в a[i]) больше l, то l присваивается значение li.
  16. Значение li устанавливается равным 1.
  17. Для каждого j от l до 1 (включительно) выполняется цикл.
  18. В цикле для каждого i от 1 до n вычисляется значение a[i] деленное на li с остатком от деления на 10.
  19. Значение a[i] деленное на li присваивается переменной b.
  20. Значение b устанавливается в строку, состоящую из символов, которые находятся в позиции 1, 2, ..., b-1 в строке c[i].
  21. Значение b присваивается переменной m.
  22. Строка c[i] очищается от символа, находящегося в позиции b-1.
  23. Значение b устанавливается в пустую строку.
  24. Для каждого i от 1 до n выводится значение a[i].
  25. Выводится сообщение noLy4uBLLIEuc9 macuB.
  26. Для каждого i от 1 до n выводится значение a[i].
  27. Программа завершается.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

10   голосов , оценка 4.3 из 5
Похожие ответы