Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- namespace lab12
- {
- class Arr
- {
- public string[] array { get; set; }
- public Arr(int n)
- {
- char [] letters = "qwertyuiopasdfghjklzxcvbnm".ToCharArray();
- Random r = new Random();
- array = new string[n];
- for (int i = 0; i < n; i++)
- {
- string rand_str = "";
- for (int j = 0; j < 17; j++)
- {
- rand_str += letters[r.Next(0, 25)].ToString();
- }
- array[i] = rand_str;
- }
- }
- public Arr(string[] _arr)
- {
- array = _arr;
- }
- public void BubbleSort()
- {
- bool f = true;
- while (f)
- {
- f = false;
- for (int i = 0; i < array.Length - 1; i++)
- {
- if (string.Compare(array[i], array[i + 1], StringComparison.Ordinal) <= 0) continue;
- {
- string temp = array[i];
- array[i] = array[i + 1];
- array[i + 1] = temp;
- f = true;
- }
- }
- }
- }
- public string[] StartThread(int threadCount)
- {
- Task<string[]> res = Task.Run(() => {
- if (threadCount == 1)
- {
- BubbleSort();
- //CountSort();
- return array;
- }
- else
- {
- string[] subarray1 = (new Arr(array.Take((int)(array.Length / 2)).ToArray())).StartThread(threadCount / 2);
- string[] subarray2 = (new Arr(array.Skip((int)(array.Length / 2)).ToArray())).StartThread(threadCount / 2);
- return GetSortedArray(subarray1, subarray2);
- }
- });
- res.Wait();
- return res.Result;
- }
- private string[] GetSortedArray(string[] subarray1, string[] subarray2)
- {
- string[] result = new string[subarray1.Length + subarray2.Length];
- int i = 0, j = 0, k = 0;
- while (i < subarray1.Length || j < subarray2.Length)
- {
- string a, b;
- if (i < subarray1.Length)
- a = subarray1[i];
- else
- a = "zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz";
- if (j < subarray1.Length)
- b = subarray1[i];
- else
- b = "zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz";
- if (string.Compare(a, b, StringComparison.Ordinal) > 0)
- {
- result[k] = a;
- i++;
- }
- else
- {
- result[k] = b;
- j++;
- }
- k++;
- }
- return result;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement