- Код: Выделить всё
- program puzirok;
 uses crt;
 conts n=10;
 vat i,j: word;
 s: word;
 a: array[1..n] of word;
 begin
 clrscr;
 randomize;
 for i:=1 to n-1 do
 for j:=i+1 to n do
 if a[i]>= a [j] then
 begin
 s:=a[i]; a[i]:=a[j]; a[j]:=s;
 end;
 for i:=1 to n do write(a[i]:5);
 writeln;
 readln;
 end.
вопрос именно к этому куску
- Код: Выделить всё
- for i:=1 to n-1 do
 for j:=i+1 to n do
 if a[i]>= a [j] then
 begin
 s:=a[i]; a[i]:=a[j]; a[j]:=s;
 end;
Имееем массив (1, 3, 17, 20, 4, 7, 9, 13, 11, 1) И этот алгоритм сортирует его таким образом:
a) 1, 3, 17, 4, 7, 9, 13, 11, 1, 20; { Это первый проход}
b)1, 3, 4, 7, 9, 13, 11, 1, 17, 20; { Второй проход }
c)1, 3, 4, 7, 9, 11, 1, 13, 17, 20; { Третий} и т.д.
Ну вот в этом коде я не понимаю как это реализуется, сколько пытался понять, не понимаю как это в нём работает ( или я неправильно алгоритм понял?)
Если кому несложно и кто меня понял, обьясните мне пожалуйста или дайте ссылочку, где можно почитать об этом. Просто я жалкий и унылый недоWEBер и => я глуп.



 ) элемент массива выталкивается наверх (вниз), поэтому его сравнивать и сортировать больше не надо. Следующий цикл попарного сравнения пойдёт для количества элементов на 1 меньше, чем это было для предыдущего цикла. И так до тех пор, пока не будут перебраны все элементы массива.
 ) элемент массива выталкивается наверх (вниз), поэтому его сравнивать и сортировать больше не надо. Следующий цикл попарного сравнения пойдёт для количества элементов на 1 меньше, чем это было для предыдущего цикла. И так до тех пор, пока не будут перебраны все элементы массива.