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

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

ᅠ ᅠ Гуру (3153), закрыт 10 месяцев назад
Как отсортировать одномерный массив по убыванию/возрастанию? Двумерный получается. А одномерный как правильно?
Лучший ответ
Ксения Райт Гений (96606) 11 месяцев назад
Смотря какой длины массив. Если не очень размерный, тогда можно сортировать его методами пузырька или прямого выбора, что ещё быстрее, хотя оба метода имеют одинаковую алгоритмическую сложность О(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.
ᅠ ᅠГуру (3153) 11 месяцев назад
 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.
А можете пояснить этот код? Что и куда подставляется из значений вместо переменных?
Ксения Райт Гений (96606) Мне трудно тут что-то пояснять - это одна из элементарнейших реализаций сортировки массива по убыванию. Если знак < поменять на > , тогда будет сортировка по возрастанию. Два элемента массива a[i] и а[j] при соблюдении определённого условия меняются местами при помощи вспомогательной переменной n. Но в данной реализации сортировки счётчики циклов на каждом шаге соответствующих им циклов модифицируются в сторону увеличения. С классическом "пузырьком" это не так, но в общем не важно. А вообще-то сразу надо освоить пару приёмов: обычную (медленную) сортировку со сложностью О(n²), например, сортировку методом прямого выбора, которая расписывается немного длиннее пузырьковой сортировки, и что-то из быстрых сортировок. Осваивается всё это как приёмы в самбо, в которых все детали важны!
Ксения РайтГений (96606) 11 месяцев назад
А сама суть любого метода сортировки (поиска и т.д.) в имеющейся литературе вполне сносно объясняется...
Остальные ответы
Похожие вопросы