// Radix Exchange Sort of unsigned integer array. typedef unsigned long int ui; void rdx(ui* b, ui* e, ui bit){ // Radix Exchange Sort if(b>1); rdx(E, e, bit>>1);}} #define n 32802500 ui w[n]; #include #include int main(){ui s=0, t=0; {int j=n; while(j--) s += (w[j] = arc4random() + ((ui)arc4random()<<32));} // printf("%lX %016lX\n", w[7], 1L<<63); rdx(w, w+n-1, 1L<<(8*sizeof(ui)-1)); // printf("%016lX %016lX\n", w[n-2], w[n-1]); {int j=n; while(j--) t += w[j];} if (s!=t) exit(printf("Futz!!\n")); {int j=n-1; while(j--) if(w[j+1] < w[j]) exit(printf("Fizz!! %d\n", j));} printf("Good!!\n"); return 0;} //time ./a.out => user: 9.17 sec