<span style="font-size:24px;">package com.jiba;
public class MergeArray {
private long[] a;
private int nElement;
public MergeArray(int max){
a = new long[max];
nElement = 0;
}
public void insert(long value){
a[nElement++] = value;
}
public void display(){
for(int j=0;j<nElement;j++){
System.out.println(a[j]+" ");
}
System.out.println();
}
public void mergeSort(){
long[] workSpace = new long[nElement];
recMerge(workSpace,0,nElement-1);
}
private void recMerge(long[] workSpace,int lowerBound,int upperBound){
if(lowerBound==upperBound)return ;
else{
int mid = (lowerBound+upperBound)/2;
recMerge(workSpace,lowerBound,mid);
recMerge(workSpace,mid+1,upperBound);
merge(workSpace,lowerBound,mid+1,upperBound);
}
}
private void merge(long[] workSpace, int lowerBound, int midP, int upperBound) {
int j=0;
int lower = lowerBound;
int mid = midP-1;
int n = upperBound-lower+1;//merge number
while(lowerBound<=mid&&midP<=upperBound){
if(a[lowerBound]<a[midP]){
workSpace[j++] = a[lowerBound++];
}else{
workSpace[j++] = a[midP++];
}
while(lowerBound<=mid){
workSpace[j++] = a[lowerBound++];
}
while(midP<=upperBound){
workSpace[j++] = a[upperBound++];
}
for(int q=0;q<n;q++){
a[lowerBound+j] = workSpace[j];
}
}
}
}
</span><span style="font-size:24px;">10000==》》40000次(merge:40s)</span><span style="font-size:24px;"></span><pre name="code" class="java"><span style="font-size:24px;">10000==》》100000000次(simple:28h)</span>
254

被折叠的 条评论
为什么被折叠?



