Возникла проблема с моими MergeSort()
и Merge()
в моей домашней работе для школы.Я новичок в C ++ (я не учился в школе два года, они изменили мою специальность с новыми классами. Я изучал Java ...) Короче говоря, мои функции Merge()
и MergeSort()
не работаютв VS Code, когда я их отлаживаю.У меня проблемы с функцией, работающей в целом.Я не знаю, правильно ли я передаю параметры.
Я пытался изменить функцию Merge()
, подняв ее выше MergeSort()
.
void Merge(int B[], int &lStart, int &lEnd, int &rStart, int &rEnd) {
int length;
int temp[length];
int theSaved = lStart;
int i = lStart;
while (lStart < lEnd && rStart <= rEnd) {
if (B[lStart] < B[rStart]) {
temp[i++] = B[lStart++];
}
else {
temp[i++] = B[rStart++];
}
}
while (lStart <= lEnd) {
temp[i++] = B[lStart++];
}
while (rStart <= rEnd) {
temp[i++] = B[rStart++];
}
for (int j = theSaved; j < rEnd; j++) {
B[j] = temp[j];
}
}
void MergeSort(int B[], int start, int end) {
int middle;
int theMiddle = middle + 1;
if (start < end) {
middle = (start + end) / 2;
MergeSort(B, start, middle);
MergeSort(B, middle + 1, end);
Merge(B, start, middle, theMiddle, end);
}
}
int main() {
int length = 7;
int begin = 0;
int end = (length - 1);
int B[length] = {10, 50, 90, 60, 5, 20, 40};
for (int i = 0; i < length; i++) {
MergeSort(B, begin, end);
cout << "\n" << B[i];
}
return 0;
}
Я просто хотел понять, что происходит.Я пытался сделать это логически, но это оказалось слишком запутанным.Выход должен быть 5,10,20,40,50,60,90