【发布时间】:2013-09-17 13:25:39
【问题描述】:
我坚持使用这种合并排序方法。我不想递归地做,但我不能让这个为我工作。我认为需要做一个小的改变才能让它发挥作用。有什么建议?
protected static void merge(long[] a, long[] workSpace, int lowPtr, int highPtr, int upperBound) {
int j = 0; // workspace index
int lowerBound = lowPtr;
int mid = highPtr-1;
int n = upperBound-lowerBound+1; // # of items
while(lowPtr <= mid && highPtr <= upperBound)
if(a[lowPtr] < a[highPtr] )
workSpace[j++] = a[lowPtr++];
else
workSpace[j++] = a[highPtr++];
while(lowPtr <= mid)
workSpace[j++] = a[lowPtr++];
while(highPtr <= upperBound)
workSpace[j++] = a[highPtr++];
for(j=0; j<n; j++)
a[lowerBound+j] = workSpace[j];
【问题讨论】:
标签: java sorting merge mergesort