C语言求指教
问题请见下面的注释行,数据结构里面的归并算法排序#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define N 1000000
int b[N];
void init(int a[],int n)//初始化
{
int i;
for(i=0;i<n;i++)
a[i] = random();
}
void print(int a[],int n)//输出
{
int i;
for(i=0;i<n;i++)
printf("%d \n",a[i]);
}
void merge(int a[],int start,int end,int mid)
{
int i=start;
int j=mid+1;
int k=0;
while(i<=mid&&j<=end)
{
if(a[i]<a[j])
b[k++]=a[i++];
else
b[k++]=a[j++];
}
while(i<=mid)
b[k++]=a[i++];
while(j<=mid)
b[k++]=a[j++];
for(i=0;i<k;i++)/
a[start++]=b[i];
}
void merge_sort(int a[],int start,int end)
{
if(start>=end)
return;
else
{
int pivot=(end+start)/2;
merge_sort(a,start,pivot);//递归在此是怎样执行的啊?是在这个递归结束后再执行下面的语句吗?这样理解的话程序整个就不对了,搞不明白,还请详解!
merge_sort(a,pivot+1,end);
merge(a,start,end,pivot);
}
}
int main()
{
int a[N];
init(a,N);
merge_sort(a,0,N);
print(a,N);
return 0;
}