Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | ||
|
Одной из наиболее распространенных операций обработки данных массива – это сортировка. Сортировкой называется распределение элементов множества по группам в соответствии с определенными правилами.
Сортировка отбором (линейная сортировка). Идея такой сортировки по невозрастанию заключается в том, чтобы последовательно просматривая весь массив, отыскать наибольшее число и поместить его на первую позицию. Затем просматриваются все остальные элементы массива и выполняется аналогичная операция по отбору из рассматриваемо части массива максимального элемента и обмену местами этого элемента и первого в рассматриваемо части, и т.д.
Сортировка методом пузырька. Это один из самых популярных методов сортировки. Он основан на том, что в процессе исполнения алгоритма более «легкие» элементы массива постепенно «всплывают». Особенностью данного метода является сравнение не каждого элемента со всеми, а сравнение в парах соседних элементов. Алгоритм пузырьковой сортировки по убыванию состоит в последовательном просмотре снизу вверх (от начала к концу) массива. Если для соседних элементов выполняется условие, согласно которому элемент, находящийся справа, больше элемента, находящегося слева, то выполняется обмен значениями этих элементов.
Далее приводятся два алгоритма сортировки первой строки двумерного массива.
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. Провести компиляцию и тестирование программы.
Дата публикования: 2015-02-22; Прочитано: 232 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!