使用字符串向量进行合并排序(C ++)

时间:2016-10-10 19:28:06

标签: c++ sorting vector mergesort

我正在尝试使用下面显示的代码对字符串向量执行合并排序。 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];
        }
    }
}

0 个答案:

没有答案