Осуществить распараллеливание алгоритма, реализующего нахождение минимального элемента одномерного массива - C#
Формулировка задачи:
Help help help
есть задание "Нахождение вектора минимальных элементов строк матрицы." и вот код
используется распараллеливание
а нужно переделать для одномерного массива
как это сделать?
using System; using System.Collections.Generic; namespace FindMin { class Program { delegate int del(int[] row); static void Main() { Random rand = new Random(DateTime.Now.Millisecond); const int ROWS_NUMBER = 10; const int COLS_NUMBER = 10; int[,] matrix = new int[ROWS_NUMBER, COLS_NUMBER]; for (int i = 0; i < ROWS_NUMBER; i++) { for (int j = 0; j < COLS_NUMBER; j++) { matrix[i, j] = rand.Next(0, 100); } } Console.WriteLine("Matrix:\n"); for (int i = 0; i < ROWS_NUMBER; i++) { for (int j = 0; j < COLS_NUMBER; j++) { Console.Write("{0,3} ", matrix[i, j]); } Console.WriteLine(); } int[] minVector = FindMinVector(matrix); Console.WriteLine("Vector of min elements:\n"); for (int i = 0; i < ROWS_NUMBER; i++) { Console.Write("{0,3} ", minVector[i]); Console.WriteLine(); } del asyncDelegate = FindMinElement; List<IAsyncResult> results = new List<IAsyncResult>(); for (int i = 0; i < ROWS_NUMBER; i++) { results.Add(asyncDelegate.BeginInvoke(GetMatrixRow(matrix, i), null, null)); if (i == 0) { Console.WriteLine("\nMain thread continues its work"); } } for (int i = 0; i < 10; i++) { minVector[i] = asyncDelegate.EndInvoke(results[i]); } Console.WriteLine("\nVector of min elements with delegates:\n"); for (int i = 0; i < ROWS_NUMBER; i++) { Console.Write("{0,3} ", minVector[i]); Console.WriteLine(); } Console.ReadLine(); } public static int[] FindMinVector(int[,] matrix) { int[] vector = new int[matrix.GetUpperBound(0)+1]; for (int i = 0; i < vector.Length; i++) { vector[i] = FindMinElement(GetMatrixRow(matrix, i)); } return vector; } public static int[] GetMatrixRow(int[,] matrix, int rowNumber) { if (rowNumber > matrix.GetUpperBound(0)+1) { return null; } int[] row = new int[matrix.GetUpperBound(0)+1]; for (int i = 0; i < row.Length; i++) { row[i] = matrix[rowNumber, i]; } return row; } public static int FindMinElement(int[] row) { int min = Int32.MaxValue; for (int i = 0; i < row.Length; i++) { if (row[i] < min) { min = row[i]; } } return min; } } }
Решение задачи: «Осуществить распараллеливание алгоритма, реализующего нахождение минимального элемента одномерного массива»
textual
Листинг программы
Thread t1 = new Thread(delegate() { min(50, mas); });
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д