Консультация № 142304
26.08.2008, 12:56
0.00 руб.
0 1 1
Помогите пожалуйста с заданием!
Тема: Сортировка массива вставкой в Pascal.
Например даны числа 1 5 3 2 4 , врезультате они должны быть расставленны по по порядку:
1) 1 5 3 2 4 ;
2) 1 2 3 5 4 ;
3) 1 2 3 4 5.
(примерно так)
заранее спасибо!

Обсуждение

Неизвестный
26.08.2008, 13:23
общий
это ответ
Здравствуйте, Мария Рудковская!
Вот Ваш пример в приложении
Ведь все очень просто: i-тый элемент принимаем за минимальный, перебираем элементы начиная с i+1-го и если меньше, то номер min меняем
А потом меняем местами элементы не прибегая к помощи буферного дополнительного элемента с помощью битовой инструкции XOR

Приложение:
const
N = 5;
a: array[1..N] of Integer = (1,5,3,2,4);
VAR
i, j, min: Integer;
BEGIN
for i:= 1 to N do Write(a[i]:8); WriteLn;
for i:= 1 to N-1 do
begin
min:=i; {Считаем, что это минимальный - номер минимального равен i}
for j:= i+1 to N do
if a[j] < a[min] then min:=j; {Если есть j-тый меньше, то он минимальный}
if i <> min then {если i-тый не был минимальным, то значение min изменится }
begin
a[i] := a[i] XOR a[min]; {меняем местами с помощью XOR - очень эффективно}
{а можно было buf:=a[i]; a[i]:=a[min]; a[min]=buf;}
a[min] := a[min] XOR a[i];
a[i] := a[i] XOR a[min]
end
end;
for i:= 1 to N do Write(a[i]:8); WriteLn;
END.
Форма ответа