【发布时间】:2015-07-04 00:06:30
【问题描述】:
我在理解合并排序算法的“合并”部分时遇到了一点麻烦,因为我试图在上下文中理解算法的某些部分,而某些变量/循环对我。我了解递归划分过程和合并的排序方面,但在这个特定的合并算法中:
public static void merge(int data[], int temp[], int low, int middle, int high){
int ri=0; //result index
int ti=low;//temp index
int di=middle;//data index
int[] result = new int[high-low+1];
while (ti<middle && di<=high){
if (data[di]<temp[ti]){
result[ri++] = data[di++];//smaller is in data
}
else{
result[ri++] = temp[ti++];//smaller is in temp
}
}
while(ti<middle) result[ri++]=temp[ti++];
while(di<=high) result[ri++]=data[di++];
for(int i=0;i<high;i++) data[low+i]=result[i];
我不明白最后 3 个循环:
while(ti<middle) result[ri++]=temp[ti++];
while(di<=high) result[ri++]=data[di++];
for(int i=0;i<high;i++) data[low+i]=result[i];
您能否解释一下这 3 个循环在合并上下文中的用途,以及任何进一步的建议以更好地理解合并排序算法的合并部分?
【问题讨论】:
标签: java algorithm sorting merge