Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиПоискОблакоVK ComboВсе проекты

Паскаль. Сортировка массивов.

ᅠ ᅠ Мастер (2131), закрыт 1 месяц назад
Как отсортировать одномерный массив по убыванию/возрастанию? Двумерный получается. А одномерный как правильно?
Лучший ответ
Ксения Райт Гений (77867) 2 месяца назад
Смотря какой длины массив. Если не очень размерный, тогда можно сортировать его методами пузырька или прямого выбора, что ещё быстрее, хотя оба метода имеют одинаковую алгоритмическую сложность О(n²), где n - число элементов массива. Если же он состоит из сотен тысяч или миллионов компонент, то пузырьковая сортировка, естественно, сразу отпадает. А вот пример как её можно реализовать:
 uses crt;  
var a, b, c, i, j, n: integer;
X: array of longint;

procedure print();
begin
j := 0;
for i := 0 to n do
begin
inc(j);
write(X[i]: 7);
if j = 10 then
begin
j := 0;
writeln
end
end;
if j > 0 then writeln
end;

begin
textbackground(white);
textcolor(black);
clrscr;
write('a b N » ');
readln(a, b, n);
randomize();
setlength(X, N);
dec(n);
c := b + 1 - a;
for i := 0 to n do X[i] := a + random(c);
writeln('Исходный рандомный массив:');
print();
for i := 1 to n do
for j := n downto i do
if X[j - 1] > X[j] then
begin
c := X[j - 1];
X[j - 1] := X[j];
X[j] := c
end;
writeln('Массив после сортировки по возрастанию:');
print()
end.
ᅠ ᅠМастер (2131) 2 месяца назад
 program test_1; 
var i, j, n: integer;
arr: array[0..9] of integer = (3, 4, 7, 1, 8, 2, 5, 4, 6, 9);
begin
for i := 0 to 8 do
for j := i + 1 to 9 do
if arr[i] < arr[j] then
begin
n := arr[i];
arr[i] := arr[j];
arr[j] := n;
end;
for i := 0 to 9 do
writeln(arr[i]);
end.
А можете пояснить этот код? Что и куда подставляется из значений вместо переменных?
Ксения Райт Гений (77867) Мне трудно тут что-то пояснять - это одна из элементарнейших реализаций сортировки массива по убыванию. Если знак < поменять на > , тогда будет сортировка по возрастанию. Два элемента массива a[i] и а[j] при соблюдении определённого условия меняются местами при помощи вспомогательной переменной n. Но в данной реализации сортировки счётчики циклов на каждом шаге соответствующих им циклов модифицируются в сторону увеличения. С классическом "пузырьком" это не так, но в общем не важно. А вообще-то сразу надо освоить пару приёмов: обычную (медленную) сортировку со сложностью О(n²), например, сортировку методом прямого выбора, которая расписывается немного длиннее пузырьковой сортировки, и что-то из быстрых сортировок. Осваивается всё это как приёмы в самбо, в которых все детали важны!
Ксения РайтГений (77867) 2 месяца назад
А сама суть любого метода сортировки (поиска и т.д.) в имеющейся литературе вполне сносно объясняется...
Остальные ответы
Похожие вопросы