using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Threading; namespace insertion_sort { class Program { static int[] A; //int mid = 150; //static int[] R; // static int[] numbers; static Thread t1; static Thread t2; static Thread t3; static ThreadStart ts1; static ThreadStart ts2; static ThreadStart ts3; public static void insertion_sort1() { A = new int[100]; Random r = new Random(); for (int i = 0; i < 49; i++) { A[i] = r.Next(1, 100); } for (int i = 0; i <= 49; i++) { int j = i; while (j != 0 && A[j - 1] > A[j]) { int temp = A[j - 1]; A[j - 1] = A[j]; A[j] = temp; j--; } } } public static void insertion_sort2() { Random r = new Random(); for (int i = 50; i < 99; i++) { A[i] = r.Next(1, 100); } for (int i = 50; i <= 99; i++) { int j = i; while (j != 0 && A[j - 1] > A[j]) { int temp = A[j - 1]; A[j - 1] = A[j]; A[j] = temp; j--; } } } static public void DoMerge() { int left = 0; int mid =50; int right = 99; A = new int[100]; int[] temp = new int[150]; int i, left_end, num_elements, tmp_pos; left_end = (mid - 1); tmp_pos = left; num_elements = (right - left + 1); while ((left <= left_end) && (mid <= right)) { if (A[left] <= A[mid]) temp[tmp_pos++] = A[left++]; else temp[tmp_pos++] = A[mid++]; } while (left <= left_end) temp[tmp_pos++] = A[left++]; while (mid <= right) temp[tmp_pos++] = A[mid++]; for (i = 0; i < num_elements; i++) { A[right] = temp[right]; right--; } } static void Main(string[] args) { ts1 = new ThreadStart(insertion_sort1); ts2 = new ThreadStart(insertion_sort2); ts3 = new ThreadStart(DoMerge); t1 = new Thread(ts1); t2 = new Thread(ts2); t3 = new Thread(ts3); t1.Start(); t2.Start(); t3.Start(); t3.Join(); } } }
var
This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)