C 合并排序单个函数

C 合并排序单个函数,c,C,我尝试在单个函数中递归合并排序 如何修复此代码以获得正确的输出 void merge(int a[], int left, int right) { if(left < right) { int mid = (left + right) / 2; merge(a, left, mid); merge(a, mid + 1, right); int b[mid - left + 1], c[right -

我尝试在单个函数中递归合并排序

如何修复此代码以获得正确的输出

void merge(int a[], int left, int right)
{
    if(left < right)
    {
        int mid = (left + right) / 2;
        merge(a, left, mid);  
        merge(a, mid + 1, right); 

        int b[mid - left + 1], c[right - mid]; 
        //two half arrays of the original array 'a'

        int i, j, k;
        for(i = left, j = 0; i <= mid; i++, j++) 
            b[j] = a[i];
        for(j = mid + 1, i = 0; j <= right; j++, i++)  
            c[i] = a[j];
        i = 0;   
        j = 0;   
        k =- 1;  
        while(k < (right - left + 1))   
        {   
            k++;
            if(i == (mid - left + 1))    
                a[k] = c[j++];
            else if(j == (right - mid))   
                a[k] = b[i++];
            else if(b[i] < c[j]) 
                a[k] = b[i++];
            else  
                a[k] = c[j++];
        }
    }
}
void合并(int a[],int左,int右)
{
if(左<右)
{
int mid=(左+右)/2;
合并(a、左、中);
合并(a,中间+1,右侧);
INTB[中-左+1],c[右-中];
//原始数组“a”的两个半数组
int i,j,k;

对于(i=left,j=0;i输入是什么,输出是什么?输入是整数数组,输出是按升序排序的同一数组。对不起,我说错了,您提供的输入和排序函数返回的是什么。
int b[mid left+1],c[right mid]
compile?也许可以看看这一页:。你能用正确的缩进来格式化你的输出吗。给出的代码很乱。输入是什么,输出是什么?输入是整数数组,输出是按升序排序的同一数组。对不起,我说错了,你通常提供的输入是什么,排序函数返回的是什么。
int b[mid-left+1],c[right-mid];
compile?也许可以看看这一页:。你能用正确的缩进设置输出格式吗?给出的代码很乱。