2 u010196982 u010196982 于 2014.02.21 11:43 提问

有关linux c,归并排序问题

void merge(int a[], int l, int m, int r)
14 {
15 int i, j, k;
16 int b[r+1];
17 for(i = l; i <= r; i++)
18 b[i] = a[i];
19 i = l; j = m + 1; k = l;
20 while(i <= m && j <= r)
21 if(b[i] < b[j]) a[k++] = b[i++];
22 else a[k++] = b[j++];
23 while(i <= m) a[k++] = b[i++];
24 while(j <= r) a[k++] = b[j++];
25 }
26 void mergesort(int a[], int l, int r)
27 {
28 int mid = 0;
29 if(l >= r)
30 return ;
31
32 mid = (l + r) / 2;
33 mergesort(a, l, mid);
34 mergesort(a, mid+1, r);
35 merge(a, l, mid, r);
36 }
我想问的是,就是在在执行完这个函数石merge(a, l, mid, r);,不久结束了吗,怎么就,又返回到mergesort这个函数去了呢,求牛人,指点一下。

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!