сортировка массива 5d в c

Я пытаюсь понять, как сортировать многомерные данные (5 измерений) в C. Я знаю, что использование массива 5d - это решение, которое, от чтение других сообщений на SO по этой теме, многие люди находят, если не совсем неэтичным, настолько эстетически отвратительным, что вызывают непрекращающуюся рвоту снарядами ... поэтому я заранее извиняюсь.

По сути, у меня есть входящий набор данных, к которому я должен применить ряд дискретных алгоритмов. Каждый алгоритм имеет набор переменных, и мне нужно рассчитать рейтинг эффективности каждого алгоритма при каждой перестановке возможны переменные. В конечном счете, мне нужен список, отсортированный по алгоритму от лучшего к худшему.Целый расчет является динамическим, поэтому то, что лучше всего работает с одним входящим фрагментом данных, вряд ли будет лучшим для другого... поэтому я не могу исключить ни одну из переменных, потому что они плохо работают.

Вот как выглядят данные:

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

Имеется:

  • 35 алгоритмов
  • 10 переменных длины
  • 230 переменных длительности
  • 27 переменных пластичности
  • 400 переменных взаимозаменяемости

Кроме того для сортировки по алгоритму, я хотел бы иметь возможность сортировать по любому из 5 измерений.

Это будет выполняться на машине с 12 физическими/24 логическими ядрами и 192 гигабайтами (не мегабайтами) оперативной памяти с использованием VS 2010 C (не C++).

Я предполагаю, что qsort будет наиболее эффективным вариантом сортировки. Я много искал в Google и SO, как это сделать, но безрезультатно. Есть ответы для одномерных массивов, многомерных массивов в PHP или C# и т. д., но не для C... или, по крайней мере, я не могу их найти.

12
задан PaeneInsula 30 March 2012 в 04:07
поделиться