Я уже некоторое время отлаживаю этот код, и проблема, которую я не могу найти (возможно, просто пропускаю что-то глупое), заключается в том, что моя функция сортировки слиянием (которая работает с массивом целых чисел) не работает с массивомстрок.
void MergeSort(string *input, int lowBound, int highBound)
{
int midBound;
if (lowBound < highBound)
{
midBound = (lowBound + highBound) / 2;
MergeSort(input, lowBound, midBound);
MergeSort(input, midBound + 1, highBound);
MergeArrs(input, lowBound, highBound, midBound);
}
}
void MergeArrs(string *a, int lowBound, int highBound, int midBound)
{
int i, j, idx;
string tmp[highBound - lowBound + 1];
i = lowBound; //Index for front arr
idx = 0;
j = midBound + 1; //Index for back arr
while (i <= midBound && j <= highBound)
{
if (a[i] < a[j])
{
tmp[idx] = a[i];
idx++;
i++;
}
else
{
tmp[idx] = a[j];
idx++;
j++;
}
}
while (i <= midBound)
{
tmp[idx] = a[i];
idx++;
i++;
}
while (j <= highBound)
{
tmp[idx] = a[j];
idx++;
j++;
}
for (i = lowBound; i <= highBound; i++)
{
a[i] = tmp[i - lowBound];
}
}
Если у кого-либо есть идеи, откуда происходит ошибка сегмента, любая информация будет принята с благодарностью.Мой тестовый массив выглядит так:
string arr[6] = {"alpha", "beta", "omega", "zeta", "epsilon", "beach"};
И называется так:
MergeSort(arr, 0, 6);