## sorting 5d array in c

I am trying to figure out how to sort a multidimensional data (5 dimensions) in C. I know that using a 5d array is a solution that, from reading others posts on SO about this topic many folks find, if not altogether unethical, so aesthetically repugnant so as to provoke unceasing projectile vomiting...so I apologize in advance.

Essentially I have an incoming set of data to which I must apply a series of discrete algorithms. Each algorithm has a set of variables, and I need to calculate a ranking of the efficiency of each algorithm with every permutation of the variables possible. Ultimately, I need a list sorted by the best-to-worst performing algorithm. The whole calculation is dynamic, so what works best on one incoming piece of data is unlikely to be the best performer on another...so I can't eliminate any of the variables because they are poor performers.

Here is how the data looks:

``````dataValue[ algo ][ lengthVar ][ durationVar ][ plasticityVar ] [ fungibilityVar]
``````

There are:

• 35 algorithms
• 10 length variables
• 230 duration vars
• 27 plasticity vars
• 400 fungibility vars

In addition to sorting by algorithm, I would like to have the flexibility to sort on any of the 5 dimensions.

This will be run on a 12 physical/ 24 logical core machine with 192 gig (not meg) of RAM, using VS 2010 C (not C++).

I am assuming that qsort would be the most efficient sorting option. I have searched Google and SO extensively for how to do this to no avail. There are answers for 1d arrays, multidimensional arrays in PHP or C#, etc, but not for C...or at least I can't find one.

I think you really need to refuse vomiting because of 5D effect. Make a struct instead:

``````typedef struct {
int algorithm;
int length;
int duration;
int plasticity;
int fungibility;
int dataValue;
} AlgorithmTestData;
``````

And then define your test data 1D array:

``````AlgorithmTestData algoTestCases[NUMBER_OF_TEST_CASES];
``````

or you can allocate it dynamically if you don't know the size of test cases with `malloc`.

Then you will `qsort` algoTestCases 1D array according to your comparision requirements.