Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
№___230105__ МУ_лаб и пр_ОАиП_часть первая.docx
Скачиваний:
4
Добавлен:
26.04.2019
Размер:
383.97 Кб
Скачать

Краткие теоретические сведения

Одной из наиболее распространенных операций обработки данных массива – это сортировка. Сортировкой называется распределение элементов множества по группам в соответствии с определенными правилами.

Сортировка отбором (линейная сортировка). Идея такой сортировки по невозрастанию заключается в том, чтобы последовательно просматривая весь массив, отыскать наибольшее число и поместить его на первую позицию. Затем просматриваются все остальные элементы массива и выполняется аналогичная операция по отбору из рассматриваемо части массива максимального элемента и обмену местами этого элемента и первого в рассматриваемо части, и т.д.

Сортировка методом пузырька. Это один из самых популярных методов сортировки. Он основан на том, что в процессе исполнения алгоритма более «легкие» элементы массива постепенно «всплывают». Особенностью данного метода является сравнение не каждого элемента со всеми, а сравнение в парах соседних элементов. Алгоритм пузырьковой сортировки по убыванию состоит в последовательном просмотре снизу вверх (от начала к концу) массива. Если для соседних элементов выполняется условие, согласно которому элемент, находящийся справа, больше элемента, находящегося слева, то выполняется обмен значениями этих элементов.

Далее приводятся два алгоритма сортировки первой строки двумерного массива.

Uses CRT;

Comst

N=10;

Type

Massiv=array[1..N,1..N]of integer;

Var

MAS:Massiv;

i,j,buf,min,N_min:integer;

BEGIN

ClrScr;

Randomize;

{======== ввод двумерного массива,

используя генератор случайных чисел =======}

For i:=1 to N do

Begin

Writeln;

For j:=1 to N do

Begin

MAS[i,j]:=random(10);

Write(MAS[i,j]:4);

End;

End;

{======== сортировка элементов

первой строки по возрастанию =======}

For i:=1 to N-1 do

Begin

min:= MAS[1,i];

N_ min:=i;

For j:=i+1 to N do

Begin

If MAS[1,j] <min

Then

Begin

min:= MAS[1,j];

N_ min:=j;

End;

End;

Buf:= MAS[1,i];

MAS[1,i]: =MAS[1,N_ min];

MAS[1,N_ min]:= Buf;

End;

{======== вывод двумерного массива =======}

For i:=1 to N do

Begin

Writeln;

For j:=1 to N do

Write(MAS[i,j]:4);

End;

Readln; END.

Program prim_sortirovka2;

Uses CRT;

Comst

N=10;

Type

Massiv=array[1..N,1..N]of integer;

Var

MAS:Massiv;

i,j,k,buf;

BEGIN

ClrScr;

Randomize;

{======== ввод двумерного массива,

используя генератор случайных чисел =======}

For i:=1 to N do

Begin

Writeln;

For j:=1 to N do

Begin

MAS[i,j]:=random(10);

Write(MAS[i,j]:4);

End;

End;

{======== сортировка элементов первой

строки по возрастанию методом пузырька =======}

For k:=1 to N-1 do

For j:=1 to N-k do

If MAS[1,j] < MAS[1,j+1]

Then

Begin

Buf:= MAS[1,j];

MAS[1,j]: =MAS[1,j|+1];

MAS[1,j+1]:= Buf;

End;

{======== вывод двумерного массива =======}

For i:=1 to N do

Begin

Writeln;

For j:=1 to N do

Write(MAS[i,j]:4);

End;

Readln;

END.

Лабораторная работа №5(2 часа)

Тема: Составление и запись алгоритмов заполнения двумерного массива по схеме в виде программы. Компиляция и тестирование программы.

Цель: Приобрести навыки составления и анализа алгоритмов заполнения двумерного массива по схеме и обработки его элементов, проведение компиляции и тестирования программы.

Задание: Разработать алгоритм решения задачи согласно варианту(см. практическую работу №4, только заполнение массивов по схеме), представить его в виде программы на языке программирования Turbo Pascal. Провести компиляцию и тестирование программы.