В данном алгоритме необходимо применить алгоритм «Поиск минимального (максимального) элемента в одномерном массиве». Пусть имеется функция:
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;
7. Сортировка по возрастанию (убыванию) элементов каждой строки (столбца) в двумерном массиве
В данном алгоритме необходимо применить алгоритм «Сортировка элементов в одномерном массиве» для каждой строки. В алгоритме строки сортируются по возрастанию. Ниже приведен код процедуры сортировки одномерного массива, использующий модифицированную функцию поиска максимального элемента в одномерном массиве:
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-ой строки