自下而上的合并问题!
我有自下而上的合并问题。排序/合并时遇到问题。目前的代码包括:
public void mergeSort(long[] a, int len) {
long[] temp = new long[a.length];
int length = 1;
while (length < len) {
mergepass(a, temp, length, len);
length *= 2;
}
}
public void mergepass(long[] a, long[] temp, int blocksize, int len) {
int k = 0;
int i = 1;
while(i <= (len/blocksize)){
if(blocksize == 1){break;}
int min = a.length;
for(int j = 0; j < blocksize; j++){
if(a[i*j] < min){
temp[k++] = a[i*j];
count++;
}
else{
temp[k++] = a[(i*j)+1];
count++;
}
}
for(int n = 0; n < this.a.length; n++){
a[n] = temp[n];
}
}
}
没有找到相关结果
已邀请:
1 个回复
厦惫
永远不会增加。 在任何时候你都不比较数组中的两个元素。 (这是
应该做的吗?我说不出来。) 你为什么乘以
和
? 什么是
? 风格问题:
将
作为参数,即使数组具有隐式长度。更糟糕的是,该功能还使用
和
。 通常差的变量名称。 吹毛求疵: 如果你要制作一个相同大小的第二个数组,通常会将其中一个作为“源”而另一个作为“目标”并在通道之间交换它们,而不是排序到临时数组并再次复制它们。