Advertisement
Guest User

Untitled

a guest
Jan 22nd, 2018
57
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.13 KB | None | 0 0
  1. void quickSort(vector <student> &list, long left, long right)
  2. {
  3.     long l = left;
  4.     long r = right;
  5.     string middle = list[(left + right) / 2].subname;
  6.  
  7.     while (l <= r)
  8.     {
  9.         while (list[l].subname < middle)
  10.             l++;
  11.         while (list[r].subname > middle)
  12.             r--;
  13.  
  14.         if (l <= r)
  15.         {
  16.             swap(list[l], list[r]);
  17.             l++;
  18.             r--;
  19.         }
  20.     }
  21.  
  22.     if (left < r)
  23.         quickSort(list, left, r);
  24.     if (l < right)
  25.         quickSort(list, l, right);
  26. }
  27.  
  28.  
  29. void heapify(vector <student> &list, long size, long i)
  30. {
  31.     long left = 2 * i + 1;
  32.     long right = 2 * i + 2;
  33.     long largest = i;
  34.    
  35.     if (left < size && list[left].subname > list[largest].subname)
  36.         largest = left;
  37.     if (right < size && list[right].subname > list[largest].subname)
  38.         largest = right;
  39.  
  40.     if (largest != i)
  41.     {
  42.         swap(list[i], list[largest]);
  43.         heapify(list, size, largest);
  44.     }
  45. }
  46.  
  47. void buildHeap(vector <student> &list, long size)
  48. {
  49.     for (long i = size / 2 - 1; i != -1; i--)
  50.         heapify(list, size, i);
  51. }
  52.  
  53. void heapSort(vector <student> &list)
  54. {
  55.     buildHeap(list, list.size());
  56.     for (long i = list.size() - 1; i > 0; i--)
  57.     {
  58.         swap(list[0], list[i]);
  59.         heapify(list, i, 0);
  60.     }
  61. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement