![]() Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Поиск минимального (максимального) элемента строки (столбца) матрицы
В данном алгоритме необходимо применить алгоритм «Поиск минимального (максимального) элемента в одномерном массиве». Пусть имеется функция: 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-ой строки
|