Консультация № 179134
17.06.2010, 13:01
0.00 руб.
0 4 1
Помогите, пожалуйста.

Рассортировать числа «горкой», то есть 1 минимальное на первое место, 2 минимальное на последнее место и т. д. Затем удалить максимальное значение из данных.

Обсуждение

Неизвестный
17.06.2010, 14:10
общий
это ответ
Здравствуйте, Петрова Алина.

Небольшой поиск в интернете дает простую программу сортировки «горкой» на Паскале, написанную экспертом Пупоревым Юрием Борисовичем.
Чтобы не повторяться, привожу свой вариант сортировки с последующим удалением максимального элемента.
Код:
{
Рассортировать числа «горкой», то есть 1 минимальное на первое место,
2 минимальное на последнее место и т. д. Затем удалить максимальное
значение из данных.
}
program q179134;

var
a: array [0..99] of integer;
n,i,iMin,loc,left,right: integer;
min,temp: integer;

{ вывод n первых элементов массива на экран }
procedure printA( n: integer );
var i: integer;
begin
for i:=0 to n-1 do
write( a[i]:4 ); { 20 элементов в строке }
writeln;
end;

begin
write( 'Razmer massiva n=' );
readln( n );
{ заполняем массив случайными числами от 0 до 99 }
randomize;
for i:=0 to n-1 do
a[i]:=random(100);

writeln( 'Ishodnyj:' );
printA( n );

loc := 0; { текущая позиция для записи минимума }
left := 0; { левая граница несортированной части }
right := n-1; { правая граница несортированной части }
while left < right do begin { пока границы не сошлись в середине }
{ ищем минимум }
iMin := left;
min := a[left];
for i:=left+1 to right do
if a[i] < min then begin iMin := i; min := a[i]; end;

{ обмениваем значение a[loc] с минимальным }
temp := a[loc];
a[loc] := min;
a[iMin] := temp;

{ сдвигаем границы }
if loc < right then begin
loc := right;
inc( left );
end
else begin
loc := left;
dec( right );
end;
end;

writeln( 'Gorka:' );
printA( n );

{ здесь left=right, причем это индекс макс. элемента }
writeln( 'Max = ', a[left] );
{ удаляем максимальный элемент }
for i := left to n-2 do
a[i] := a[i+1];
dec(n);
printA( n );

write( 'Press [Enter] to exit...' );
readln;
end.

Программа проверена в Borland Pascal 7.0.

Успехов!
5
спасибо!
Неизвестный
17.06.2010, 16:23
общий
amnick:
спасибо)
давно
Профессор
401888
1232
17.06.2010, 16:52
общий
amnick:
Снимаю шляпу....
Неизвестный
17.06.2010, 19:25
общий
Пупорев Юрий Борисович:
За что? Это я перед Вами должен снимать шляпу.
Форма ответа