/* a-wada/qsortlib/juli/revised-jp.c Jan. 22, 2006 */ /* from http://mse-uc01.eng.ohio-state.edu/cubictoo/Co/Src/VecMat/ sortersNotes/qsort_Wada/revised.c by Ju Li */ /* for "Fastest double array index sort subroutine contest" by Ju Li */ /* extern int c0, m0; XXX */ #define QSNAME jp #define ARGS int N, double *P, int *ix typedef int PTRTYP; #define DFWRK STACK; int t #define VALID N > 1 #define HSKP l = 0, r = N - 1; for (i = 0; i < N; i++) ix[i] = i #define ESZ 1 #define ORDR(i, j) (P[ix[i]] <= P[ix[j]]) /* c0++, XXX */ #define SWAP(i, j) t = ix[i], ix[i] = ix[j], ix[j] = t /* , m0 += 2 XXX */ #define CLNUP #define STACK PTRTYP s[STKSZ], *p = s #define STKSZ sizeof (int) * 16 #define PUSH(x, y) *(p++) = x, *(p++) = y #define EMPTY (s >= p) #define POP(y, x) y = *(--p), x = *(--p) #include "qsortbase-ccn.h" QSORTBASE (QSNAME) /* a-wada/qsortlib/juli/revised-jp.c end */ /* "Fastest double array index sort subroutine contest" by Ju Li http://www.mars.dti.ne.jp/a-wada/qsortlib/juli/match.c http://www.mars.dti.ne.jp/a-wada/qsortlib/juli/revised-glibc.c http://www.mars.dti.ne.jp/a-wada/qsortlib/juli/revised-merge.c http://www.mars.dti.ne.jp/a-wada/qsortlib/juli/revised-nr.c http://www.mars.dti.ne.jp/a-wada/qsortlib/juli/revised-jp.c http://www.mars.dti.ne.jp/a-wada/qsortlib/juli/random.c http://www.mars.dti.ne.jp/a-wada/qsortlib/juli/qsortbase-ccn.h */