У меня проблема с передачей переменной как вектора. Я надеюсь, что один из вас сможет мне помочь. Код должен сортировать числа вектора, и я хотел бы использовать указатели для предотвращения копий.
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;
}
}
}