#include<stdio.h>
#include<stdlib.h>
//合并
void merge(int arr[],int temparr[],int left,int mid,int right)
{
int pos=left;
int l_pos=left;
int r_pos=mid+1;
while(l_pos<=mid&&r_pos<=right)
{
if(arr[l_pos]<arr[r_pos])
temparr[pos++]=arr[l_pos++];
else
temparr[pos++]=arr[r_pos++];
}
while(l_pos<=mid)
temparr[pos++]=arr[l_pos++];
while(r_pos<=right)
temparr[pos++]=arr[r_pos++];
while(left<=right)
{
arr[left]=temparr[left];
left++;
}
}
//分开
void msort(int arr[],int temparr[],int left,int right)
{
if(left<right)
{
int mid=(left+right)/2;
msort(arr,temparr,left,mid);//左
msort(arr,temparr,mid+1,right);//右
merge(arr,temparr,left,mid,right);
}
}
归并排序mergesort
最新推荐文章于 2024-10-09 22:28:58 发布