Консультация № 138909
01.06.2008, 11:44
0.00 руб.
0 1 1
Уважаемые эксперты помогите пожалуйста решить задачу! Сортировка одноимённогоо масива D(n) по возростанию, методом обмена.

Обсуждение

Неизвестный
01.06.2008, 15:00
общий
это ответ

<i>Здравствуйте, <b>Щербаков Евгений Николаевич</b>!</i>

Пример находится в приложении. От пользователя требуется только ввести n (не должна превышать константы MASS_SIZE, объявленной выше), массив заполняется самостоятельно.
Обмен элементов массива производится без дополнительных переменных, с использованием функции XOR (Исключающее-ИЛИ).

<em>Удачи!</em>

Приложение:
program q138909; uses Crt; const {Размерность массива} MASS_SIZE = 20; type Mass = array[1..MASS_SIZE] of Integer; {Процедура сортировки обменом} procedure sortExchange(var aMass: Mass; const n: Integer); var i, m: Integer; fin: Boolean; begin for m:= 1 to n-1 do begin fin:= True; for i:= n-1 downto m do if (aMass[i] > aMass[i+1]) then begin fin:= False; {Обмен элементов массива} aMass[i]:= aMass[i] xor aMass[i+1]; aMass[i+1]:= aMass[i] xor aMass[i+1]; aMass[i]:= aMass[i] xor aMass[i+1]; end; {Если ничего не переместили, значит сортировка закончена} if fin then Exit; end; end; var D: Mass; i, n: Integer; begin {Очистка экрана} ClrScr; repeat write(‘n = ‘); readln(n); until ((n > 0) and (n < MASS_SIZE)); {Инициализация} Randomize; {Заполнение массива случайными числами} for i:= 1 to n do begin { Диапазон -250..250 } D[i]:= Random(501) - 250; {Сразу выводим массив} write(D[i]:4, ‘ ‘); end; writeln; {Сортировка} writeln; writeln(‘Sorted:‘); sortExchange(D, n); {Выводим результат} for i:= 1 to n do write(D[i]:4, ‘ ‘); writeln; {Ожидание нажатия пользователем любой кнопки} WriteLn; WriteLn(‘Press any key...‘); ReadLn; end.
Форма ответа