Поразрядная сортировка - 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.
Объяснение кода листинга программы
- Создается программа lab10a.
- Объявляются переменные: a, ai, c, i, n, l, li, j, s, k, h, b, m.
- Выводится сообщение
BBedute kolu4ecTBo eleMeHToB maccuBa
. - Считывается значение переменной n.
- Для каждого i от 1 до n выводится сообщение
a[i]=
. - Значение каждого i считывается в переменную a[i].
- Выводится сообщение
maccuB do coptuPoBKu
. - Для каждого i от 1 до n выводится значение a[i].
- Вычисляется значение l как наибольшего показателя степени 10, который встречается в a[i].
- Значение l присваивается переменной l.
- Значение a[1] присваивается переменной b.
- Пока b больше 0, выполняется цикл.
- В цикле увеличивается значение l на 1.
- Значение b делится на 10 и результат присваивается переменной b.
- Если li (количество цифр в a[i]) больше l, то l присваивается значение li.
- Значение li устанавливается равным 1.
- Для каждого j от l до 1 (включительно) выполняется цикл.
- В цикле для каждого i от 1 до n вычисляется значение a[i] деленное на li с остатком от деления на 10.
- Значение a[i] деленное на li присваивается переменной b.
- Значение b устанавливается в строку, состоящую из символов, которые находятся в позиции 1, 2, ..., b-1 в строке c[i].
- Значение b присваивается переменной m.
- Строка c[i] очищается от символа, находящегося в позиции b-1.
- Значение b устанавливается в пустую строку.
- Для каждого i от 1 до n выводится значение a[i].
- Выводится сообщение
noLy4uBLLIEuc9 macuB
. - Для каждого i от 1 до n выводится значение a[i].
- Программа завершается.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д