Осуществить распараллеливание алгоритма, реализующего нахождение минимального элемента одномерного массива - 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); });

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

14   голосов , оценка 4.214 из 5
Похожие ответы