我正在尝试使用下面显示的代码对字符串向量执行合并排序。 wordlist是字符串的私有向量。我似乎遇到了代码行“temp [i] = wordlist [l];”的问题。当我尝试调试。此代码目前正在提供分段错误。有谁知道我可能做错了什么?我确信有更好的方法可以做到这一点,但我显然我只是一个初学者。
int wordList::merge(int size)
{
string *temp = (string *)malloc(size * sizeof(string));
mergeSort(0, size, temp);
free(temp);
}
void wordList::mergeSort(int left, int right, string *temp)
{
if(right == left + 1)
{
return;
}
else
{
int i = 0;
int length = right - left;
int midpt = length/2;
int l = left, r = left + midpt;
mergeSort(left, left + midpt, temp);
mergeSort(left + midpt, right, temp);
for(i = 0; i < length; i++)
{
if(l < left + midpt && (r == right || (wordlist[l] > wordlist[r])))
{
temp[i] = wordlist[l];
l=l+1;
}
else
{
temp[i] = wordlist[r];
r=r+1;
}
}
for(i = left; i < right; i++)
{
wordlist[i] = temp[i - left];
}
}
}