我想修改QuickSort(在 Java),以便每次要求分治时,比例阵列的中位数都作为ot。
在 Java,我有一个中位选择算法,该算法是中位数最小的因素。 我在java有吨快速算法,所有算法都自行运作,并形成一个阵列。 不幸的是,我可以把这两者结合起来,以便实现上述目标。 每当我尝试一次,通常都会有 st流.。
任何人都能够向我表明,我们如何能够做到这一点?
成就
EDIT:例如,这是我试图使用的中位选择算法。
public int quickSelect(int[] A, int p, int r, int k) {
if (p==r) return A[p];
int q = Partition(A,p,r);
int len = q-p+1;
if (k == len) return A[q];
else if (k<len) return Select(A,p,q-1,k);
else return Select(A,q+1,r,k-len);
}
public int partition(int[]A, int p, int r) {
int x = A[r];
int i = p-1;
for (int j = p; j<=r-1; j++) {
if (A[j] <= x) {
i++;
swap(A,i,j);
}
}
swap(A,i+1,r);
return i+1;
}
它本身发挥了作用,但当我试图通过快速分治功能来呼吁速选,以归还将要使用的纸板时,它就没有工作。 显然,我做的是错事,但我不知道什么。 遗憾的是,在互联网上,我发现任何算法,即使是在伪装上,将中选与快速选结合起来。