void merge(int a[], int b[], int c[])
{
int i = 0, j = 0, k = 0;
while (i < M && j < N) //循环两两比较,小者存入结果表;
if (a[i] < b[j])
c[k++] = a[i++];
else
c[k++] = b[j++];
while (i < M) //还剩一个没有比较完的序列标;
c[k++] = a[i++];
while (j < N)
c[k++] = b[j++];
}
int merge(int a[], int m, int b[], int n, int c[])
{
int i = 0, j = 0, k = 0;
while (i < m&&j < n)
{
if (a[i]>b[j])
c[k++] = a[i++];
else if (a[i] < b[j])
c[k++] = b[j++];
else
c[k++] = a[i++]; //或则是c[k++]=b[j++];
}
while (i < m)
c[k++] = a[i++];
while (j < n)
c[k++] = b[j++];
return k;
}
数组a[M],b[N],c[M+N]分别用来储存原表和结果表,其中,M和N是整体量(常数);void merge(int a[], int b[], int c[]){ int i = 0, j = 0, k = 0; while (i &lt; M &amp;&amp; j &lt; N) //循环两两比较,小者存入结果表; if (a[i] &lt; b[j]) c[k++...