Advertisement
Guest User

gogogog

a guest
May 23rd, 2017
82
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 3.20 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6.  
  7. namespace lab12
  8. {
  9.     class Arr
  10.     {
  11.         public string[] array { get; set; }
  12.  
  13.         public Arr(int n)
  14.         {
  15.             char [] letters = "qwertyuiopasdfghjklzxcvbnm".ToCharArray();
  16.             Random r = new Random();
  17.             array = new string[n];
  18.             for (int i = 0; i < n; i++)
  19.             {
  20.                 string rand_str = "";
  21.                 for (int j = 0; j < 17; j++)
  22.                 {
  23.                     rand_str += letters[r.Next(0, 25)].ToString();
  24.                 }
  25.                 array[i] = rand_str;
  26.             }
  27.         }
  28.  
  29.         public Arr(string[] _arr)
  30.         {
  31.             array = _arr;
  32.         }
  33.  
  34.         public void BubbleSort()
  35.         {
  36.             bool f = true;
  37.             while (f)
  38.             {
  39.                 f = false;
  40.                 for (int i = 0; i < array.Length - 1; i++)
  41.                 {
  42.                     if (string.Compare(array[i], array[i + 1]) < 0) continue;
  43.                     {
  44.                         string temp = array[i];
  45.                         array[i] = array[i + 1];
  46.                         array[i + 1] = temp;
  47.                         f = true;
  48.                     }
  49.                 }
  50.             }
  51.         }
  52.  
  53.         public string[] StartThread(int threadCount)
  54.         {
  55.             Task<string[]> res = Task.Run(() => {
  56.                 if (threadCount == 1)
  57.                 {
  58.                     BubbleSort();
  59.                    // Merge_Sort(array);
  60.                     return array;
  61.                 }
  62.                 else
  63.                 {
  64.                     string[] subarray1 = (new Arr(array.Take((int)(array.Length / 2)).ToArray())).StartThread(threadCount / 2);
  65.                     string[] subarray2 = (new Arr(array.Skip((int)(array.Length / 2)).ToArray())).StartThread(threadCount / 2);
  66.                     return GetSortedArray(subarray1, subarray2);
  67.                 }
  68.             });
  69.             res.Wait();
  70.             return res.Result;
  71.         }
  72.  
  73.  
  74.         private string[] GetSortedArray(string[] subarray1, string[] subarray2)
  75.         {
  76.            
  77.                 string[] result = new string[subarray1.Length + subarray2.Length];
  78.  
  79.                 int i = 0, j = 0, k = 0;
  80.                 while (i < subarray1.Length || j < subarray2.Length)
  81.                 {
  82.                     string a, b;
  83.                     if (i < subarray1.Length)
  84.                         a = subarray1[i];
  85.                     else
  86.                         a = "zzzzzzzzzzzzzzzzzzzzzz";
  87.                     if (j < subarray2.Length)
  88.                         b = subarray2[j];
  89.                     else
  90.                         b = "zzzzzzzzzzzzzzzzzzzzzz";
  91.                     if (string.Compare(a, b) < 0)
  92.                      {
  93.                         result[k] = a;
  94.                         i++;
  95.                         }
  96.                     else
  97.                     {
  98.                         result[k] = b;
  99.                         j++;
  100.                     }
  101.                     k++;
  102.                 }
  103.                 return result;
  104.             }    
  105.         }
  106.     }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement