У меня проблемы с передачей переменной vector <int>в c ++ с указателями - PullRequest
0 голосов
/ 08 мая 2020

У меня проблема с передачей переменной как вектора. Я надеюсь, что один из вас сможет мне помочь. Код должен сортировать числа вектора, и я хотел бы использовать указатели для предотвращения копий.

vector<int> Heap::heapSort() {
    Heap h;

    vector<int>  heap =  { 5,39,18,0,221,15,99,22,66 };

    cout << "Unsortierte Liste: ";

    for (int h : heap) {
        cout << h << " ";
    }

    cout << endl << "--------------------------------------------" << endl;


    for (int k = h.parentPos(numHElements); k >= 0; k--) {
        h.bubbleUpMax(heap, k, numHElements);
    }

    while (numHElements > 1) {

        swap(heap[numHElements - 1], heap[0]);

        h.bubbleUpMax(heap, 0, numHElements - 1);

        numHElements--;
    }
    ////////////////////////////////////// 

    cout << "Sortierte Liste:   ";
    for (int h : heap) {
        cout << h << " ";
    }
    cout << endl;


    return heap;
}


void Heap::bubbleUpMax(vector<int> * heap, int k, int sizeUnsorted) {
    Heap h;

    while (k * 2 + 1 < sizeUnsorted) {
        // Linke Kindposition: k * 2+1, Rechte Kindposition: k * 2+2 
        int childPos = k * 2 + 1;


        if ((childPos + 1 < sizeUnsorted) && (heap[childPos] < heap[childPos + 1]))
        {
            childPos++;
        }

        if (heap[h.parentPos(childPos)] < heap[childPos]) {  
            swap(heap[childPos], heap[k]);
            k = childPos;
        }

        else {
            break;
        }

    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...