schwab: some buggy idea that segfaults - might simplify a lot instead
This commit is contained in:
parent
6d8802f479
commit
6fcf79bee3
@ -127,9 +127,30 @@ static inline void schwab_sort(
|
|||||||
int r0 = schwab_pick_pivot(state, (high + 1) - low) + low;
|
int r0 = schwab_pick_pivot(state, (high + 1) - low) + low;
|
||||||
int r1 = schwab_pick_pivot(state, (high + 1) - low) + low;
|
int r1 = schwab_pick_pivot(state, (high + 1) - low) + low;
|
||||||
|
|
||||||
int plo = (r0 < r1) ? r0 : r1;
|
uint32_t k0 = array[r0];
|
||||||
int phi = (r0 < r1) ? r1 : r0;
|
uint32_t k1 = array[r1];
|
||||||
int pmid = schwab_pick_pivot(state, (phi + 1) - plo) + plo;
|
int plo = r0;
|
||||||
|
int phi = r1;
|
||||||
|
if(k0 > k1) {
|
||||||
|
plo = r1;
|
||||||
|
phi = r0;
|
||||||
|
uint32_t tmp = k0;
|
||||||
|
k0 = k1;
|
||||||
|
k1 = tmp;
|
||||||
|
}
|
||||||
|
|
||||||
|
int r2 = schwab_pick_pivot(state, (phi + 1) - plo) + plo;
|
||||||
|
uint32_t k2 = array[r2];
|
||||||
|
int pmid = r2;
|
||||||
|
if(k2 < k0) {
|
||||||
|
int tmp = plo;
|
||||||
|
plo = pmid;
|
||||||
|
pmid = tmp;
|
||||||
|
} else if(k2 > k1) {
|
||||||
|
int tmp = phi;
|
||||||
|
phi = pmid;
|
||||||
|
pmid = tmp;
|
||||||
|
}
|
||||||
|
|
||||||
schwab_partition(array, low, high, &plo, &pmid, &phi);
|
schwab_partition(array, low, high, &plo, &pmid, &phi);
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user