我试图阻止任何不必要的递归调用mergesort,因为我的数组是由部分预分类,例如:
22, 233, 445, 1055, 1, 14, 94, 74545, 75, 134, 323, 9090, 2, 43, 6342, 323452
Run Code Online (Sandbox Code Playgroud)
我正在使用通用mergesort实现
void merge(int a[], int low, int mid, int high)
{
int b[10000];
int i = low, j = mid + 1, k = 0;
while (i <= mid && j <= high) {
if (a[i] <= a[j])
b[k++] = a[i++];
else
b[k++] = a[j++];
}
while (i <= mid)
b[k++] = a[i++];
while (j <= high)
b[k++] = a[j++];
k--;
while (k …Run Code Online (Sandbox Code Playgroud)