问题描述
- 有关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这个函数去了呢,求牛人,指点一下。
时间: 2024-08-24 20:35:58