Осуществить распараллеливание алгоритма, реализующего нахождение минимального элемента одномерного массива - C#

Узнай цену своей работы

Формулировка задачи:

Help help help есть задание "Нахождение вектора минимальных элементов строк матрицы." и вот код
Листинг программы
  1. using System;
  2. using System.Collections.Generic;
  3. namespace FindMin
  4. {
  5. class Program
  6. {
  7. delegate int del(int[] row);
  8. static void Main()
  9. {
  10. Random rand = new Random(DateTime.Now.Millisecond);
  11. const int ROWS_NUMBER = 10;
  12. const int COLS_NUMBER = 10;
  13. int[,] matrix = new int[ROWS_NUMBER, COLS_NUMBER];
  14. for (int i = 0; i < ROWS_NUMBER; i++)
  15. {
  16. for (int j = 0; j < COLS_NUMBER; j++)
  17. {
  18. matrix[i, j] = rand.Next(0, 100);
  19. }
  20. }
  21. Console.WriteLine("Matrix:\n");
  22. for (int i = 0; i < ROWS_NUMBER; i++)
  23. {
  24. for (int j = 0; j < COLS_NUMBER; j++)
  25. {
  26. Console.Write("{0,3} ", matrix[i, j]);
  27. }
  28. Console.WriteLine();
  29. }
  30. int[] minVector = FindMinVector(matrix);
  31. Console.WriteLine("Vector of min elements:\n");
  32. for (int i = 0; i < ROWS_NUMBER; i++)
  33. {
  34. Console.Write("{0,3} ", minVector[i]);
  35. Console.WriteLine();
  36. }
  37.  
  38. del asyncDelegate = FindMinElement;
  39. List<IAsyncResult> results = new List<IAsyncResult>();
  40. for (int i = 0; i < ROWS_NUMBER; i++)
  41. {
  42. results.Add(asyncDelegate.BeginInvoke(GetMatrixRow(matrix, i), null, null));
  43. if (i == 0)
  44. {
  45. Console.WriteLine("\nMain thread continues its work");
  46. }
  47. }
  48.  
  49. for (int i = 0; i < 10; i++)
  50. {
  51. minVector[i] = asyncDelegate.EndInvoke(results[i]);
  52. }
  53. Console.WriteLine("\nVector of min elements with delegates:\n");
  54. for (int i = 0; i < ROWS_NUMBER; i++)
  55. {
  56. Console.Write("{0,3} ", minVector[i]);
  57. Console.WriteLine();
  58. }
  59. Console.ReadLine();
  60. }
  61. public static int[] FindMinVector(int[,] matrix)
  62. {
  63. int[] vector = new int[matrix.GetUpperBound(0)+1];
  64. for (int i = 0; i < vector.Length; i++)
  65. {
  66. vector[i] = FindMinElement(GetMatrixRow(matrix, i));
  67. }
  68. return vector;
  69. }
  70. public static int[] GetMatrixRow(int[,] matrix, int rowNumber)
  71. {
  72. if (rowNumber > matrix.GetUpperBound(0)+1)
  73. {
  74. return null;
  75. }
  76. int[] row = new int[matrix.GetUpperBound(0)+1];
  77. for (int i = 0; i < row.Length; i++)
  78. {
  79. row[i] = matrix[rowNumber, i];
  80. }
  81. return row;
  82. }
  83. public static int FindMinElement(int[] row)
  84. {
  85. int min = Int32.MaxValue;
  86. for (int i = 0; i < row.Length; i++)
  87. {
  88. if (row[i] < min)
  89. {
  90. min = row[i];
  91. }
  92. }
  93. return min;
  94. }
  95. }
  96. }
используется распараллеливание а нужно переделать для одномерного массива как это сделать?

Решение задачи: «Осуществить распараллеливание алгоритма, реализующего нахождение минимального элемента одномерного массива»

textual
Листинг программы
  1. Thread t1 = new Thread(delegate() { min(50, mas); });

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


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

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

14   голосов , оценка 4.214 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы