Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Поиск минимального (максимального) элемента строки (столбца) матрицы






В данном алгоритме необходимо применить алгоритм «Поиск минимального (максимального) элемента в одномерном массиве». Пусть имеется функция:

function MinElem(A: tVector): integer;

{ функция возвращает номер минимального элемента в строке матрицы

A – i-ая строка матрицы

m – количество столбцов матрицы

Возвращаемое значение – номер столбца содержащего минимальный элемент

}

Var

i: integer; // счетчик цикла (номер столбца матрицы)

nMin: integer; // номер минимального элемента

Begin

nMin: =1; // за минимальный принимаем первый

for i: =2 to m do // для каждого элемента строки

if A[i]< A[nMin] then // элемент меньше ранее найденного минимального значения

nMin: =i; // запомнили что минимальным является i-й элемент

MinElem: =nMin // возвращаем номер минимального элемента

end;

 

Примечание: Структуру данных соответствующую столбам матрицы описать невозможно. Это связано с тем, что двумерный массив храниться в памяти компьютера по принципу «строка за строкой». Поэтому подпрограммы связанные с обработкой столбцов матриц требуют дополнительной модификации: требуется передача всей матрицы и указание номера обрабатываемого столбцы. Например, функция поиска минимального значения в столбце будем иметь вид:

function MinElem(A: tMatrix; k: integer): integer;

{ функция возвращает номер минимального элемента в k-ом столбце матрицы

A – матрица

k – номер обрабатываемого столбца

n – количество строк матрицы

Возвращаемое значение – номер строки содержащей минимальный элемент

}

Var

i: integer; // счетчик цикла (номер строки)

nMin: integer; // номер минимального элемента

Begin

nMin: =1; // за минимальный принимаем первый

for i: =2 to n do // для каждого элемента

if A[i][k]< A[nMin][k] then // меньше ранее найденного минимального значения

nMin: =i; // запомнили что минимальным является i-й элемент

MinElem: =nMin // возвращаем номер минимального элемента

end;

 

Сортировка по возрастанию (убыванию) элементов каждой строки (столбца) в двумерном массиве

В данном алгоритме необходимо применить алгоритм «Сортировка элементов в одномерном массиве» для каждой строки. В алгоритме строки сортируются по возрастанию. Ниже приведен код процедуры сортировки одномерного массива, использующий модифицированную функцию поиска максимального элемента в одномерном массиве:

function MinElem(A: tVector; k: integer): integer;

{ функция возвращает номер минимального элемента в массиве,

но поиск начинается k-го элемента, а не с первого

A – одномерный массив

n – количество элементов в массиве

Возвращаемое значение – номер минимального элемента

}

Var

i: integer;

nMin: integer;

Begin

nMin: =k; // за минимальный принимаем k-й элемент

for i: =k+1 to n do // для каждого из оставшихся, начиная с (k+1)-го и до последнего

if A[i]< A[nMin] then

nMin: =i;

MinElem: =nMin

end;

procedure SortVector(var A: tVector);

Var

i, // счетчик цикла

nEl // номер минимального элемента

: integer;

temp: integer; // тип эквивалентен типу элементов массива A

Begin

for i: =1 to n-1 do begin // от первого до предпоследнего элемента

// находим минимальный элемент среди элементов от следующего за i-м

nEl: = MinElem(A, i+1);

if (A[i]> A[nEl]) then begin // меняем местами A[nEl] и A[i] если необходимо

temp: =A[i];

A[i]: =A[nEl];

A[nEl]: =temp

End

end;

Тогда алгоритм сортировки элементов строк матрицы примет вид:

for k: =1 to n do // для каждой строки

SortVector(A[i]) // сортируем элементы i-ой строки

 






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.