Advertisement
Fanta-MindTerror

Untitled

Dec 2nd, 2020
719
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 1.76 KB | None | 0 0
  1. static DoublyLinkedList<Worker> Merge(DoublyLinkedList<Worker> array, int lowIndex, int middleIndex, int highIndex)
  2.         {
  3.             int left = lowIndex;
  4.             int right = middleIndex+1;
  5.             DoublyLinkedList<Worker> tempArray = new DoublyLinkedList<Worker>();
  6.             int index = 1;
  7.  
  8.             while ((left <= middleIndex) && (right <= highIndex))
  9.             {
  10.                 if ( array.Get(left).Data.Surname.CompareTo(array.Get(right).Data.Surname) < 0 )
  11.                 {
  12.                     tempArray.Insert(array.Get(left).Data, index);
  13.                     left++;
  14.                 }
  15.                 else
  16.                 {
  17.                     tempArray.Insert(array.Get(right).Data, index);
  18.                     right++;
  19.                 }
  20.                 index++;
  21.             }
  22.  
  23.             for (int i = left; i <= middleIndex; i++)
  24.             {
  25.                 tempArray.Insert(array.Get(i).Data,index);
  26.                 index++;
  27.             }
  28.             for (int i = right; i <= highIndex; i++)
  29.             {
  30.                 tempArray.Insert(array.Get(i).Data, index);
  31.                 index++;
  32.             }
  33.  
  34.             for(int i = 1; i <= tempArray.Count; i++)
  35.             {
  36.                 array.Insert(tempArray.Get(i).Data, lowIndex-1 + i);
  37.             }
  38.             return array;
  39.         }
  40.  
  41. static DoublyLinkedList<Worker> MergeSort(DoublyLinkedList<Worker> workers, int lowIndex, int highIndex)
  42. {
  43.   if(lowIndex < highIndex)
  44.        {
  45.          int middleIndex = (lowIndex + highIndex) / 2;
  46.          workers = MergeSort(workers, lowIndex, middleIndex);
  47.          workers = MergeSort(workers, middleIndex + 1, highIndex);
  48.          workers = Merge(workers, lowIndex, middleIndex, highIndex);
  49.         }
  50.   return workers;
  51. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement