// Mergesort for a random permutation, see Sedgewick, 3rd ed. // Not stable, but merge and insertion sort routines could easily be changed. #include #include #include #define generateRandom(minRange,maxRange) \ (minRange)+abs(random()) % ((maxRange)-(minRange)+1) typedef int Item; #define key(A) (A) #define less(A, B) (key(A) < key(B)) #define exch(A, B) { Item t = A; A = B; B = t; } #define compexch(A, B) if (less(B, A)) exch(A, B) void generatePerm(int *perm,int permSize) { int i,k,temp; for (i=0;i