void merge(int *nums,int low,int mid,int high)
{
int i=low;
int j=mid+1;
int index=0;
int *temp=malloc(sizeof(int)*(high-low+1));
while(i<=mid&&j<=high)
{
if(nums[i]<=nums[j])
temp[index++]=nums[i++];
else
temp[index++]=nums[j++];
}
while(i<=mid)
temp[index++]=nums[i++];
while(j<=high)
temp[index++]=nums[j++];
for(i=low,index=0;i<=high;i++)
nums[i]=temp[index++];
return;
}
void merge_sort(int *nums,int low,int high)
{
if(low<high)
{
int mid=(low+high)/2;
merge_sort(nums,low,mid);
merge_sort(nums,mid+1,high);
merge(nums,low,mid,high);
}
return;
}
C语言实现归并排序
最新推荐文章于 2024-09-26 12:20:20 发布