合并c ++中的字符串数组

时间:2015-04-04 03:34:05

标签: c++ arrays string sorting merge

我有一个名为"值"的字符串向量。我想合并排序他们但我不断收到总线错误或分段错误。我知道错误来自merge_sort函数,但我不知道如何解决它。有什么想法吗?

    int main()
    {
            int p=1,q=values.size()/2,r=values.size();
            merge_sort(values,p,r);

            for (unsigned int i = 0; i < values.size(); i++)
            {
                cout << values[i] << endl;
            }

        }
}

        void merge_sort(vector<string> a,int p,int r)
        {
            int q;
            if(p<r)
            {
                q=r/2;
                merge_sort(a,p,q);
                merge_sort(a,q+1,r);
                merge(a,p,q,r);
            }
        }

        void merge(vector<string> a,int p,int q,int r)
        {
            int n1=q-p+1;
            int n2=r-q;
            string L[n1+1];
            string R[n2+1];
            for(int i=0;i<n1;i++)
            {
                L[i]=a[p+i-1];
            }
            for(int j=0;j<n2;j++)
            {
                R[j]=a[q+j];
            }
            L[n1]="ZZZZZZZZZZZZZZZZZZZZZZZZZZZ";
            R[n2]="ZZZZZZZZZZZZZZZZZZZZZZZZZZZ";

            int i=0, j=0;
            for(int k=0;k<r;k++)
            {
                if(L[i]<=R[j])
                {
                    a[k]=L[i];
                    i++;
                }
                else
                {
                    a[k]=R[j];
                    j++;
                }
            }
        }

0 个答案:

没有答案