归并排序:基于分治的排序算法
主要步骤:
1.找到分界点
2.递归排序
3.归并,合二为一
如果我的文章对你有帮助的话,请给我点一个赞哦
void merge_sort(int q[],int l,int r){
if(l>=r) return;
//1.确定分界点
int mid =l+r>>1;
//2.递归排序
merge_sort(q,l,mid);
merge_sort(q,mid+1,r);
//3.归并,合二为一
int k=0,i=l,j=mid+1;
while(i<=mid&&j<=r) //左右两边没有遍历到结尾
if(q[i]<=q[j]) temp[k++]=q[i++]; //把较小的数放到数组tmp中
else temp[k++]=q[j++];
while (i<=mid) tem[k++]=q[i++];
while (j<=r) temp[k++]=q[j++];
for(int i=l,j=0;i<=r;i++,j++) q[i] =tmp[j];
}