Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- static DoublyLinkedList<Worker> Merge(DoublyLinkedList<Worker> array, int lowIndex, int middleIndex, int highIndex)
- {
- int left = lowIndex;
- int right = middleIndex+1;
- DoublyLinkedList<Worker> tempArray = new DoublyLinkedList<Worker>();
- int index = 1;
- while ((left <= middleIndex) && (right <= highIndex))
- {
- if ( array.Get(left).Data.Surname.CompareTo(array.Get(right).Data.Surname) < 0 )
- {
- tempArray.Insert(array.Get(left).Data, index);
- left++;
- }
- else
- {
- tempArray.Insert(array.Get(right).Data, index);
- right++;
- }
- index++;
- }
- for (int i = left; i <= middleIndex; i++)
- {
- tempArray.Insert(array.Get(i).Data,index);
- index++;
- }
- for (int i = right; i <= highIndex; i++)
- {
- tempArray.Insert(array.Get(i).Data, index);
- index++;
- }
- for(int i = 1; i <= tempArray.Count; i++)
- {
- array.Insert(tempArray.Get(i).Data, lowIndex-1 + i);
- }
- return array;
- }
- static DoublyLinkedList<Worker> MergeSort(DoublyLinkedList<Worker> workers, int lowIndex, int highIndex)
- {
- if(lowIndex < highIndex)
- {
- int middleIndex = (lowIndex + highIndex) / 2;
- workers = MergeSort(workers, lowIndex, middleIndex);
- workers = MergeSort(workers, middleIndex + 1, highIndex);
- workers = Merge(workers, lowIndex, middleIndex, highIndex);
- }
- return workers;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement