Я новый для C++ и algorithm.I запутался в алгоритме сортировки Merge, который я пишу. Я не знаю, почему код не получает правильного ответа, если у него нет ошибок. В коде я хочу сортировать 5 номеров, которые я вводил. но отсортированные массивы не печатаются на экране. Я хочу знать проблемы в моем коде. Большое спасибо.Мой алгоритм сортировки ответов не получил правильного ответа
#include<iostream>
using namespace std;
int merge(int a[], int low, int mid, int high) {
int h = low; int j = mid + 1; int k = low;
int *b = new int[high - low + 1];
while ((h <= mid) && (j <= high)) {
if (a[h] < a[j])
b[k++] = a[h++];
else
b[k++] = a[j++];
}
if (h > mid) {
for (j; j <= high;++j)
b[k++]=a[j];
}
if (j > high) {
for (h; h <= mid; ++h)
b[k++] = a[h];
}
for (int i = low; i <= high; ++i)
a[i] = b[i];
delete []b;
return 0;
}
int MergeSort(int a[], int low, int high) {
if (low < high) {
int mid = (low + high)/2;
MergeSort(a, low, mid);
MergeSort(a, mid + 1, high);
merge(a, low, mid, high);
}
return 0;
}
int main() {
int const n(5);
int a[n];
cout << "Input " << n << " numbers please:";
for (int i = 0; i < n; ++i) {
cin >> a[i];
}
MergeSort(a, 0, n - 1);
for (int i = 0; i <= n - 1; ++i)
cout << a[i] << " ";
cout << endl;
}
Вы пытались отладить свой код? – HazemGomaa
@Amier вы могли бы сказать, какой ввод дает вам неправильный ответ? код, похоже, отлично работает на моей системе ..! –
Просто потому, что какой-то код проходит через компилятор без ошибок, это не значит, что он должен быть правильным. Существует много возможностей для * неопределенного поведения * или других * логических ошибок *. Прежде всего, вы должны включить дополнительные предупреждения и исправить их так, как если бы они были ошибками. Затем вы должны узнать, как использовать отладчик и как проходить код за строкой, контролируя переменные. –