package sort;
/**
* å½å¹¶æåºçææ³æ¯å°æ°ç»åæä¸¤é¨åï¼åå«è¿è¡æåºï¼ç¶åå½å¹¶èµ·æ¥ã
*
* @author å壮é£
* https://github.com/zfman.
* https://blog.csdn.net/lzhuangfei.
*/
public abstract class MergeSort> extends Sort {
protected T[] tmp;
protected void merge(T[] nums, int l, int m, int h) {
//i:å¾
å½å¹¶çåè
çä½ç½®,j:å¾
å½å¹¶çåè
çä½ç½®
int i = l, j = m + 1;
for (int k = l; k <= h; k++) {
tmp[k] = nums[k];
}
//两个ååºååå¹¶
int v=l;
while(i<=m&&j<=h){
if(tmp[i].compareTo(tmp[j])<=0) nums[v++]=tmp[i++];
else nums[v++]=tmp[j++];
}
if(m>i){
for(;j<=h;j++) nums[v++]=tmp[j];
}
if(j>h){
for(;i<=m;i++) nums[v++]=tmp[i];
}
}
}