Advertisement
Guest User

Untitled

a guest
May 25th, 2018
88
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.98 KB | None | 0 0
  1. void addBeforeFirst(Node *& head, double value) {
  2.  
  3. Node * newNode = new Node;
  4. newNode->value = value;
  5.  
  6. if (head == NULL) {
  7. head = newNode;
  8. newNode->next = NULL;
  9.  
  10. }
  11. else {
  12. newNode->next = head;
  13. head = newNode;
  14.  
  15. newNode->prev = NULL;
  16. newNode->next->prev = head;
  17. }
  18.  
  19. }
  20.  
  21. int partitionLomuto(Node * head, int l, int r) {// według Lomuto
  22.  
  23. //Podziel uzywajac ostatniego
  24. double x = get(r);
  25.  
  26. int i = l - 1;
  27.  
  28. for (int j = l; j < r; j++)
  29.  
  30. if (get( j) < x) {
  31. i++;
  32. swap(i, j);
  33. }
  34.  
  35. swap(i + 1, r);
  36.  
  37. return i + 1;
  38. }
  39.  
  40. void quickSort(Node * head, int l, int r) {
  41.  
  42. if (l >= r) {
  43. return;
  44. }
  45.  
  46. int pivot = partitionLomuto(head, l, r);
  47.  
  48. quickSort(head, l, pivot - 1);
  49. quickSort(head, pivot + 1, r);
  50. }
  51. void quickSortV2(Node *& head) {
  52. this->add(NULL);
  53. //Dodaj wartownika
  54. addBeforeFirst(head, NULL);
  55. //quickSort
  56. quickSort(head, 1, size - 1);
  57.  
  58. head->prev = NULL;
  59. deleteValue(NULL);
  60. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement