归并排序算法
把待排序序列分成相同大小的两个部分,依次对这两部分进行归并排序,完毕之后再按照顺序进行合并。
基本分治:将原问题分解为规模小的相对独立的子问题,在出口直接解决,然后递归,将子问题的解合并
intb[100];//辅助用的临时存储数组
voidMerge(inta[],intleft,intmid,intright)
{
inti=left,j=mid+1,k=left;
while(i<=mid&&j<=right){
if(a[i]<a[j])b[k++]=a[i++];
elseb[k++]=a[j++];
}
while(i<=mid)b[k++]=a[i++];
while(j<=right)b[k++]=a[j++];
for(k=left;k<=right;k++){
a[k]=b[k];
}
}
voidMergeSort(inta[],intleft,intright)
{
if(left<right){
intmid=(left+right)/2;
MergeSort(a,left,mid);
MergeSort(a,mid+1,right);
Merge(a,left,mid,right);
}
}
相关推荐
nongfusanquan0 2020-08-18
Broadview 2020-07-19
数据与算法之美 2020-07-05
Masimaro 2020-06-21
wonner 2020-06-17
Oudasheng 2020-06-04
从零开始 2020-06-05
清溪算法君老号 2020-06-01
风吹夏天 2020-05-26
yangjingdong00 2020-05-11
Tips 2020-04-30
troysps 2020-04-26
ustbfym 2020-04-25
清溪算法君老号 2020-04-24
dushine00 2020-04-19
数据与算法之美 2020-04-18
wulaxiaohei 2020-04-17
nurvnurv 2020-04-16