private void test(){
// 源数据
int[] arr ={1,4,7,2,3,8,9,5,6,10}
// 目标:=====》 int[] arr = {1,2,4,9,5,6,7,9,10};
System.out.println("排序前--------->" + Arrays.toString(arr));
mergeSort(arr);
System.out.println("排序之后------>" + Arrays.toString(arr));
}
@SuppressLint("NewApi")
private static int[] mergeSort(int[] arr) {
if(arr.length <= 1) return arr;
int mid = arr.length/2;
int[] left = Arrays.copyOfRange(arr,0 ,mid);
int[] right = Arrays.copyOfRange(arr,mid,arr.length);
// 递归分割数组, 达到不可分割 为止
left = mergeSort(left);
right = mergeSort(right);
return merge(arr,left,right);
}
private static int[] merge(int[] A, int[] B, int[] C) {
int i = 0,j = 0 ,k = 0 ;
int lenB =B.length;
int lenC =C.length;
while(i < lenB && j <lenC){
if(B[i] < C[j]){
A[k] = B[i];
i++;
// B 和 i 对应起来
}else{
A[k] = C[j];
j++;
// C 和 i 对应起来
}
k++;
}
//i==lenB,说明B 已经全部入A中,c剩下的直接存在A中
if(i == lenB){
while(j< lenC){
A[k] = C[j];
j++;
k++;
}
}
if(j == lenC ){
while (i < lenB){
A[k] = B[i];
i++;
k++;
}
}
return A;
}
合并排序
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 数组合并:直接使用common-lang中的jar包pom.xml配置 基本数据类型的排序不必重写compareTo方法