这里写自定义目录标题
P2424_排序_归并排序1P2525_排序_归并排序2P2626_排序_归并排序3P2727_排序_归并排序4P2828_排序_归并排序5P2929_排序_归并排序6P3030_排序_归并排序7P3131_排序_归并排序8
package test
;
public class TestFactorial {
public static void main(String
[] args
) {
long method
= method(100000);
System
.out
.println(method
);
}
public static long method(int n
){
if(n
==1){
return 1;
}else{
return n
*method(n
-1);
}
}
}
P2424_排序_归并排序1
如果是9个呢? 9/2=4 前4个,后5个。
P2525_排序_归并排序2
2、是对数组的一部分进行排序。 从索引low到high
3、low-mid,mid+1-high 将这个两个合并成一个有序的大组。
P2626_排序_归并排序3
P2727_排序_归并排序4
3-4重复
P2828_排序_归并排序5
P2929_排序_归并排序6
P3030_排序_归并排序7
package test
;
import sort
.Merge
;
import java
.util
.Arrays
;
public class MergeTest {
public static void main(String
[] args
) {
Integer
[] a
= {8,4,5,7,1,3,6,2};
Merge
.sort(a
);
System
.out
.println(Arrays
.toString(a
));
}
}
package sort
;
public class Merge {
private static Comparable
[] assist
;
private static boolean less(Comparable v
, Comparable w
) {
return v
.compareTo(w
)<0;
}
private static void exch(Comparable
[] a
, int i
, int j
) {
Comparable t
= a
[i
];
a
[i
] = a
[j
];
a
[j
] = t
;
}
public static void sort(Comparable
[] a
) {
assist
= new Comparable[a
.length
];
int lo
=0;
int hi
=a
.length
-1;
sort(a
,lo
,hi
);
}
private static void sort(Comparable
[] a
, int lo
, int hi
) {
if (hi
<=lo
){
return;
}
int mid
= lo
+(hi
-lo
)/2;
sort(a
,lo
,mid
);
sort(a
,mid
+1,hi
);
merge(a
,lo
,mid
,hi
);
}
private static void merge(Comparable
[] a
, int lo
, int mid
, int hi
) {
int i
=lo
;
int p1
=lo
;
int p2
=mid
+1;
while(p1
<=mid
&& p2
<=hi
){
if (less(a
[p1
],a
[p2
])){
assist
[i
++] = a
[p1
++];
}else{
assist
[i
++]=a
[p2
++];
}
}
while(p1
<=mid
){
assist
[i
++]=a
[p1
++];
}
while(p2
<=hi
){
assist
[i
++]=a
[p2
++];
}
for(int index
=lo
;index
<=hi
;index
++){
a
[index
]=assist
[index
];
}
}
}
P3131_排序_归并排序8
通过测试,发现希尔排序和归并排序在处理大批量数据时差别不是很大。