Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- void addBeforeFirst(Node *& head, double value) {
- Node * newNode = new Node;
- newNode->value = value;
- if (head == NULL) {
- head = newNode;
- newNode->next = NULL;
- }
- else {
- newNode->next = head;
- head = newNode;
- newNode->prev = NULL;
- newNode->next->prev = head;
- }
- }
- int partitionLomuto(Node * head, int l, int r) {// według Lomuto
- //Podziel uzywajac ostatniego
- double x = get(r);
- int i = l - 1;
- for (int j = l; j < r; j++)
- if (get( j) < x) {
- i++;
- swap(i, j);
- }
- swap(i + 1, r);
- return i + 1;
- }
- void quickSort(Node * head, int l, int r) {
- if (l >= r) {
- return;
- }
- int pivot = partitionLomuto(head, l, r);
- quickSort(head, l, pivot - 1);
- quickSort(head, pivot + 1, r);
- }
- void quickSortV2(Node *& head) {
- this->add(NULL);
- //Dodaj wartownika
- addBeforeFirst(head, NULL);
- //quickSort
- quickSort(head, 1, size - 1);
- head->prev = NULL;
- deleteValue(NULL);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement