Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
attachments_03-09-2012_10-20-12 / Массивы.doc
Скачиваний:
42
Добавлен:
21.05.2015
Размер:
149.5 Кб
Скачать

Нахождения максимального элемента массива и его номера.

Алгоритм решения задачи следующий. Пусть в переменной с именем Maxхранится максимальный элемент массива, а в переменной с именемNmax- его номер. Предположим, что первый элемент массива является максимальным, и запишем его в переменнуюMax, а вNmaxзапишем его номер (т.е. 1). Затем все элементы, начиная со второго, сравниваем с максимальным. Если текущий элемент массива (i-й) оказывается больше максимального, то записываем его в переменнуюMax, а в переменнуюNmaxтекущее значение индексаi.

Рис.5 Нахождения максимального элемента массива и его номера

Соответствующий участок программы будет иметь вид:

const n=10;

var x: array [1..n] of integer;

i, Max, NMax : integer;

begin

{ввод элементов массива}

Max:=X[1];

Nmax:=1;

for i:=2 to N do

if X[i]>Max then

begin

Max:=X[i];

Nmax:=i;

end;

writeln(‘Max = ‘,Max,’ Max position = ‘, Nmax);

В данном примере можно обойтись одной переменной Nmax, т.к. зная позицию максимального элемента, мы знаем и его значение. Тогда код можно переписать так

Nmax:=1;

for i:=2 to N do

if X[i]>X[NMax] then

Nmax:=i;

writeln(‘Max = ‘,X[NMax],’ Max position = ‘, Nmax);

Упорядочивание массива по возрастанию

Решим следующую задачу: задан массив из nцелых чисел, упорядочить массив по возрастанию. Блок-схема представлена на рис.6. Алгоритм упорядочивания состоит в следующем. Сравниваем текущий и последующий элементы массива, если текущий больше последующего, то меняем их местами. В результате этих действий самый большой элемент станет на последнее место, т.е. наN-е. Теперь повторяем этот алгоритм дляN-1 элемента массива и устанавливаем максимальный элемент на (N-1)-е место. Так повторяем до тех пор, пока не упорядочим весь массив. Для упорядочивания по убыванию необходимо при сравнении элементов массива заменить знак “больше” на знак “меньше”. Такой метод получил название пузырьковой сортировки.

Рис.6. Алгоритм упорядочивания массива

Пример программы упорядочивания массива (пузырьковая сортировка).

const n=10;

var  i,j,b: integer;

y: array [1..n] of integer;

begin

for i:=1 to n do //ввод элементов массива

    begin

        write('y[',i']=');  readln (y[i]);

    end;

writeln ('массив y ');

for i:=1 to n do //вывод элементов массива

write (y [i],' '); 

writeln;

for j:=1 to n-1 do

for i:=1 to n-j do

        if  y[i] > y[i+1]  then

            begin // Меняем элементы местами

                b:=y[i];

                y[i]:=y[i+1];

                y[i+1]:=b;

            end;

writeln('упорядоченный массив');

for i:=1 to n do  

write (y[i],' '); 

writeln;

end.

Пузырьковая сортировка является самой медленной. Так как для размещения элемента на свое место необходимо много раз переставить его с соседними элементами. Сортировка выбором (selectionsort) работает несколько быстрее пузырьковой, т.к. в ней существенно меньше перестановок элементов. Задача сортировки выбором - искать наименьший элемент, который затем меняется местами с элементом из начала массива. Затем находится наименьший из оставшихся элементов и меняется местами со вторым элементом. Процесс продолжается до тех пор, пока все элементы не займут свое конечное положение.

const n=10;

var  i,j,x,k: integer;

M: array [1..n] of integer;

{x-значение минимального элемента, k- позиция минимального элемента}

begin

………

For I:=1 to N-1 do

begin

k:=i;{запоминаем начальную позицию и первое значение минимума}

X:=M[i];

For J:=i+1 to n do {поиск нового минимального значения}

If M[j] < x then

begin

k:=j;

x:=M[k];

end;

If i<>k then begin

M[k]:=M[i];{меняем местами i-й и минимальный k}

M[i]:=x; end;

end;

……

end.