void mergeSort(int *sortedArr, int start, int end)
{
if(start == end)
{
return;
}
int mid = (int)((start + end) / 2);
mergeSort(sortedArr, start, mid);
mergeSort(sortedArr, mid + 1, end );
int *tempArr = new int[end - start + 1];
int i = start;
int j = mid + 1;
int k = 0;
while(i <= mid && j <= end)
{
if(sortedArr[i] < sortedArr[j])
{
tempArr[k] = sortedArr[i];
i++; k++;
}
else
{
tempArr[k] = sortedArr[j];
j++; k++;
}
}
if(i == mid + 1)
{
for(; j <= end; j++, k++)
tempArr[k] = sortedArr[j];
}
else
{
for(; i <= mid; i++, k++)
tempArr[k] = sortedArr[i];
}
k = 0;
for(int i = start; i <= end; i++, k++)
sortedArr[i] = tempArr[k];
delete[] tempArr;
}
没有评论:
发表评论