Уровень В: Дан массив из N элементов. Вывести на экран три самых больших элемента массива.
Уровень С: Дан массив из N элементов. Определить количество различных элементов в массиве.
Сортирова массивов
Cортировка – это упорядочение элементов массива по возрастанию или убыванию.Задачи упорядочения (сортировки) данных в массивах имеют большое практическое значение.
Алгоритмы сортировки используются в программах «Проводник» и «Мой компьютер» в ОС Windows, в программах-справочниках, в базах данных, в мобильных телефонах (например, при отображении списка контактов), и т. д. Это в значительной степени облегчает нам поиск нужной информации.
Методов сортировки существует очень много. Рассмотрим два простых метода сортировки – метод обмена и метод выбора.
Метод обмена («пузырька»)
Идея – пузырек воздуха в стакане воды поднимается со дна вверх. При этом самые крупные пузырьки всплывают первыми, а самые маленькие – последними. Применим эту идею к массивам.Начиная с первого элемента массива, сравниваем поочередно каждые два соседних элемента; если они расположены не по возрастанию, меняем их местами.
После одного такого прохода на последнем (N-ом) месте в массиве будет стоять наибольший элемент – «всплыл» первый «пузырек».
Поскольку самый большой элемент уже стоит на своей последней позиции, то второй проход обменов выполняется до N-1-го элемента.
И так далее. Всего потребуется N-1 проход.
Program Sort_obmen;
Const N=10;
Var
a : array[1..N] of integer;
i, j, c : integer;
Begin
Cls;
writeln('Массив до сортировки:');
for i:=1 to n do
begin
a[i]:=random(100);
write(a[i]:5);
end;
writeln;
for i:=1 to N-1 do
for j:=1 to N-i do
if a[j]>a[j+1] then begin
c:=a[j];
a[j]:=a[j+1];
a[j+1]:=c;
end;
writeln('Массив после сортировки:');
for i:=1 to n do
write(A[i]:5);
writeln;
End.
Метод выбора
Метод выбора основан на изученном нами ранее методе нахождения максимального и минимального элемента массива.В массиве нужно отыскать минимальный элемент и поставить на первое место (поменять местами с первым элементом).
Из оставшихся, то есть среди элементов от второго до последнего, найти минимальный элемент и поставить на второе место (поменять местами со вторым).
И так далее (всего N-1 проходов.
Program Sort_vybor;
Const N=10;
Var
a : array[1..N] of integer;
i, j, min, k : integer;Begin
Cls;
writeln('Массив до сортировки:');
for i:=1 to n do
begin
a[i]:=random(100);
write(a[i]:5);
end;
writeln;
for i:=1 to N-1 do begin
min:=a[i]; k:=i;
for j:=i+1 to N do
if a[j]<min then begin
min:=a[j];
k:=j
end;
a[k]:=a[i];
a[i]:=min;
end; writeln('Массив после сортировки:');
for i:=1 to n do
write(A[i]:5);
writeln;
End.
Const N=10;
Var
a : array[1..N] of integer;
i, j, min, k : integer;Begin
Cls;
writeln('Массив до сортировки:');
for i:=1 to n do
begin
a[i]:=random(100);
write(a[i]:5);
end;
writeln;
for i:=1 to N-1 do begin
min:=a[i]; k:=i;
for j:=i+1 to N do
if a[j]<min then begin
min:=a[j];
k:=j
end;
a[k]:=a[i];
a[i]:=min;
end; writeln('Массив после сортировки:');
for i:=1 to n do
write(A[i]:5);
writeln;
End.
Комментариев нет:
Отправить комментарий