правильно ли я отсортировал правую часть и как вызвать эту сортировку?
Процедура слияния упорядоченных частей массива в буфер-промежуточный массив
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);
}
}