Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/reporting-services/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 慢并行基数排序_Java_Arrays_Multithreading_Sorting_Radix Sort - Fatal编程技术网

Java 慢并行基数排序

Java 慢并行基数排序,java,arrays,multithreading,sorting,radix-sort,Java,Arrays,Multithreading,Sorting,Radix Sort,考虑以下代码: int maxElements = numElements + minElements; int mask = (1 << maskLen) - 1; for (int j = 0; j < a.length; j++) { if (minElements <= ((a[j] >> shift) & mask) && maxElements > ((a[j] >> shif

考虑以下代码:

int maxElements = numElements + minElements;
int mask = (1 << maskLen) - 1;

for (int j = 0; j < a.length; j++) {

    if (minElements <= ((a[j] >> shift) & mask) 
        && maxElements > ((a[j] >> shift) & mask))  {

        b[sumCount[(a[j] >> shift) & mask]++] = a[j];
    }
}
int maxElements=numElements+minElements;
整数掩码=(1个移位)和掩码)
&&maxElements>((a[j]>>移位)和掩码)){
b[sumCount[(a[j]>>shift)和mask]+]=a[j];
}
}
这是2位radixSorting与线程的最后一部分,我们有一个赋值

排序工作非常完美,但是速度非常慢。我应该有一个大于1的加速(顺序时间/并行时间),但我几乎没有得到0.5

我明白了为什么,现在我不得不通过整个
a[]
来获得正确的排序


我想知道的是,是否有其他方法可以解决这个问题?通过一百万个数组的位置是很多的,这大大减慢了我的程序

基数排序通常使用值的随机放置,我不明白为什么需要循环。我熟悉基数排序,但我不太明白您在这里做什么。在元素数组中循环排序和使用掩码做什么?同样,这个问题与多线程/并行算法无关