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 r1 = schwab_pick_pivot(state, (high + 1) - low) + low;
|
||||
|
||||
int plo = (r0 < r1) ? r0 : r1;
|
||||
int phi = (r0 < r1) ? r1 : r0;
|
||||
int pmid = schwab_pick_pivot(state, (phi + 1) - plo) + plo;
|
||||
uint32_t k0 = array[r0];
|
||||
uint32_t k1 = array[r1];
|
||||
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);
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user