static void Main() { int[,] Indexes; Console.Write("Введите размер массива: "); n = Convert.ToInt32(Console.ReadLine()); Console.Write("Введите количество потоков: "); p = Convert.ToInt32(Console.ReadLine()); int sp = 1; Console.WriteLine("Введите спрособ заполнения массива: 1 - рандомное заполнение (по умолчанию), 2 - неравномерное заполнение"); sp = Convert.ToInt32(Console.ReadLine()); if (sp == 2) { mas = MAS1(); } if (sp == 1) { mas = MAS(); } //foreach (var item in mas) //{ // Console.WriteLine(item); //} Indexes = PartIdexes(); sm.Start(); MyPart[] Parts = new MyPart[p]; //массив потоков for (int i = 0; i < p; i++) { int[] mp = new int[Indexes[i, 1] - Indexes[i, 0] + 1]; int u = 0; for (int j = Indexes[i, 0]; j <= Indexes[i, 1]; j++) { mp[u] = mas[j]; u++; } Console.WriteLine("В потоке №" + i + " обрабатывается " + mp.Length + " элементов"); Parts[i] = new MyPart(mp, i); mp = null; } foreach (var item in Parts) { item.Thrd.Join(); } int[] SMas = new int[n]; SMas = SortMas(Parts); sm.Stop(); //Console.WriteLine("Выводим отсортированный массив:"); //foreach (var item in SMas) //{ // Console.WriteLine(item); //} long time = sm.ElapsedMilliseconds; Console.WriteLine("Время затраченное на сортировку массива (в миллисекундах): " + time); Console.ReadLine(); }
static void Main() { int[,] Indexes; Console.Write("Введите размер массива: "); n = Convert.ToInt32(Console.ReadLine()); Console.Write("Введите количество потоков: "); p = Convert.ToInt32(Console.ReadLine()); int sp = 1; Console.WriteLine("Введите спрособ заполнения массива: 1 - рандомное заполнение (по умолчанию), 2 - неравномерное заполнение"); sp = Convert.ToInt32(Console.ReadLine()); if (sp == 2) { mas = MAS1(); } if (sp == 1) { mas = MAS(); } int max = mas.Max <int>(), min = mas.Min <int>(); //foreach (var item in mas) //{ // Console.WriteLine(item); //} Indexes = PartIdexes(min, max); sm.Start(); MyPart[] Parts = new MyPart[p]; //массив потоков List <int> mp = new List <int>(); for (int i = 0; i < p - 1; i++) { for (int j = 0; j < mas.Length; j++) { if ((mas[j] >= Indexes[i, 0]) && (mas[j] < Indexes[i, 1])) { mp.Add(mas[j]); } } Console.WriteLine("В потоке №" + i + " обрабатывается " + mp.Count() + " элементов"); Parts[i] = new MyPart(mp, i); mp.Clear(); } for (int j = 0; j < mas.Length; j++) { if ((mas[j] >= Indexes[p - 1, 0]) && (mas[j] <= Indexes[p - 1, 1])) { mp.Add(mas[j]); } } Console.WriteLine("В потоке №" + (p - 1) + " обрабатывается " + mp.Count() + " элементов"); Parts[p - 1] = new MyPart(mp, p - 1); foreach (var item in Parts) { item.Thrd.Join(); } List <int> SMas; SMas = SortMas(Parts); sm.Stop(); //Console.WriteLine("Выводим отсортированный массив:"); //foreach (var item in SMas) //{ // Console.WriteLine(item); //} long time = sm.ElapsedMilliseconds; Console.WriteLine("Время затраченное на сортировку массива (в миллисекундах): " + time); Console.ReadLine(); }