// Mergesort for a random permutation, see CLRS, 2nd ed // Input: Number of elements to generate for random permutation // and seed for srandom/random // Output: Random integers in sorted order // Simple recursive mergesort is used. Several // improvements could be made. #include #include #define generateRandom(minRange,maxRange) \ (minRange)+abs(random()) % ((maxRange)-(minRange)+1) int *perm,permSize,numPerms; void generatePerm() // Uniform random permutation generator from CLRS { int i,k,temp; for (i=0;i