double arrow

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


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

functionMinElem(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;

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

functionMinElem(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;

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

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

functionMinElem(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;

procedureSortVector(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-ой строки


Сейчас читают про: