Другие языки программирования и технологии

Как сделать ряд чисел в порядке возрастания?

Что еще для этого нужно написать?

Код программы:
var a:array [1..10] of integer;
i:integer;
begin
memo1.Lines.Clear;
randomize;
for i:=1 to 10 do begin
a:=random(100);
memo1.lines.Add( inttostr(i) + ' элемент массива ' + inttostr (a));
Сортировку )

Добавлено 1 минуту назад
А что такое сортировка?

Метод "пузырька"

По-видимому, самым простым методом сортировки является так называемый метод "пузырька". Чтобы уяснить его идею, представьте, что массив (таблица) расположен вертикально. Элементы с большим значением всплывают вверх наподобие больших пузырьков. При первом проходе вдоль массива, начиная проход "снизу", берется первый элемент и поочередно сравнивается с последующими. При этом:

если встречается более "легкий" (с меньшим значением) элемент, то они меняются местами;
при встрече с более "тяжелым" элементом, последний становится "эталоном" для сравнения, и все следующие сравниваются с ним .
В результате наибольший элемент оказывается в самом верху массива.

Во время второго прохода вдоль массива находится второй по величине элемент, который помещается под элементом, найденным при первом проходе, т. е на вторую сверху позицию, и т. д.

Заметим, что при втором и последующих проходах, нет необходимости рассматривать ранее "всплывшие" элементы, т. к. они заведомо больше оставшихся. Другими словами, во время j-го прохода не проверяются элементы, стоящие на позициях выше j.

Теперь можно привести текст программы упорядочения массива M[1..N]:

begin
for j:=1 to N-1 do
for i:=1 to N-j do
if M > M[i+1] then
swap(M,M[i+1])
end;
Стандартная процедура swap будет использоваться и в остальных алгоритмах сортировки для перестановки элементов (их тип мы уточнять не будем) местами:

procedure swap(var x,y: ...);
var t: ...;
begin
t := x;
x := y;
y := t
end;

Заметим, что если массив M — глобальный, то процедура могла бы содержать только аргументы (а не результаты) . Кроме того, учитывая специфику ее применения в данном алгоритме, можно свести число парметров к одному (какому?) , а не двум.
Олег Дюкс
Олег Дюкс
6 106
Лучший ответ

Похожие вопросы