Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- void quickSort(vector <student> &list, long left, long right)
- {
- long l = left;
- long r = right;
- string middle = list[(left + right) / 2].subname;
- while (l <= r)
- {
- while (list[l].subname < middle)
- l++;
- while (list[r].subname > middle)
- r--;
- if (l <= r)
- {
- swap(list[l], list[r]);
- l++;
- r--;
- }
- }
- if (left < r)
- quickSort(list, left, r);
- if (l < right)
- quickSort(list, l, right);
- }
- void heapify(vector <student> &list, long size, long i)
- {
- long left = 2 * i + 1;
- long right = 2 * i + 2;
- long largest = i;
- if (left < size && list[left].subname > list[largest].subname)
- largest = left;
- if (right < size && list[right].subname > list[largest].subname)
- largest = right;
- if (largest != i)
- {
- swap(list[i], list[largest]);
- heapify(list, size, largest);
- }
- }
- void buildHeap(vector <student> &list, long size)
- {
- for (long i = size / 2 - 1; i != -1; i--)
- heapify(list, size, i);
- }
- void heapSort(vector <student> &list)
- {
- buildHeap(list, list.size());
- for (long i = list.size() - 1; i > 0; i--)
- {
- swap(list[0], list[i]);
- heapify(list, i, 0);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement