правильно ли я отсортировал правую часть и как вызвать эту сортировку?

Процедура слияния упорядоченных частей массива в буфер-промежуточный массив

void merge(int a[], long left, long split, long right) { long pos1=left; 
    long pos2=split+1; 
    
    long pos3=0;    
    int *temp;
    temp = new int[right-left+1];
    while (pos1 <= split && pos2 <= right)
    
    {
    if (a[pos1] < a[pos2]) { temp[pos3] = a[pos1]; pos3++;pos1++;} else {temp[pos3] = a[pos2]; pos3=pos3++;pos2++;}
    
    }
    while (pos1 <= split) 
    
    { temp[pos3] = a[pos1]; pos3++;pos1++;}
    
    while (pos2 <= right) 
    
    { temp[pos3] = a[pos2]; pos3++; pos2++; }
    for (pos3 = 0; pos3 < right-left+1; pos3++) a[left+pos3] = temp[pos3];
    delete [] temp;
    }

Процедура непосредственного упорядочение массива

void mergeSort(int a[], long left, long right) { long split;    
if (left<right)

{

split = (left + right)/2;
mergeSort(a, left, split); 

mergeSort(a,right,split);????

merge(a,  left, split, right);  
}
}

Ответы (0 шт):