Я пытаюсь выяснить, как сортировать многомерные данные (5 измерений) в C. Я знаю, что использование массива 5d является решением, которое из читая другие сообщения о SO по этой теме, многие люди находят, если не совсем неэтичны, так эстетично отвратительны, чтобы спровоцировать непрекращающуюся рву рвутся... поэтому я заранее извиняюсь.
По существу у меня есть входящий набор данных, к которым я должен применить серию дискретных алгоритмов. Каждый алгоритм имеет набор переменных, и мне нужно рассчитать рейтинг эффективности каждого алгоритма с каждой перестановкой возможны переменные. В конечном счете, мне нужен список, отсортированный по алгоритму наилучшего в худшем. Целый вычисление является динамическим, поэтому наилучшее действие на одном входящем фрагменте данных вряд ли будет лучшим исполнителем на другом... поэтому я не могу устранить любую из переменных, потому что они плохие исполнители.
Вот как выглядят данные:
dataValue[ algo ][ lengthVar ][ durationVar ][ plasticityVar ] [ fungibilityVar]
Есть:
- 35 алгоритмов
- 10 переменных длины
- 230 длительности vars
- 27 пластичность vars
- 400 мерных vars
В дополнение к сортировке по алгоритму я хотел бы иметь гибкость для сортировки по любому из 5 измерений.
Это будет работать на 12 физических /24 логических ядрах с 192 гигабайтами (не мега) ОЗУ, используя VS 2010 C (не С++).
Я предполагаю, что qsort будет наиболее эффективным вариантом сортировки. Я искал Google и SO для того, чтобы сделать это безрезультатно. Есть ответы для 1d массивов, многомерных массивов в PHP или С# и т.д., Но не для C... или, по крайней мере, я не могу их найти.