У меня есть интересная проблема, с которой я боролся в течение последних 2 дней без конкретного решения. Я пытаюсь написать программу в C, который принимает следующий входной массив:Сортировка массива на основе набора из 4 индексов в C
1,1,5,5,
1,1,5,9,
2,2,6,2,
1,2,5,5,
1,3,6,6,
1,4,5,1,
4,1,5,6,
5,2,7,1,
1,1,6,0,
2,2,5,0,
Шаг 1: группа выше массив на основе 3-го столбца, как это (ведро рода на кортеж из 4 элементов (т.е. каждая строка) , основываясь на значениях 3 колонки:
2,2,5,5
1,1,5,9,
1,2,5,5,
1,4,5,1,
4,1,5,6,
2,2,5,0,
2,2,6,2,
1,3,6,6,
1,1,6,0,
5,2,7,1
Шаг 2: Наконец сортировать элементы, основанные на 4-м столбце в каждом сегменте, как это:
Окончательный выход массива:
2,2,5,0,
1,4,5,1,
2,2,5,5,
1,2,5,5,
4,1,5,6,
1,1,5,9,
1,1,6,0,
2,2,6,2,
1,3,6,6,
5,2,7,1
Элементы в 1-й и 2-й колонках не играют никакой роли в вышеуказанном процессе сортировки.
Я пробовал различные методы, используя сортировку quicksort или bucket, а затем последующую quicksort. Ничего не получилось совершенно правильно. Может ли кто-нибудь предложить метод выполнения этого в C, используя соответствующие структуры данных.
Как это отличается от сортировки по виртуальному ключу, состоящему из 3-го столбца и 4-го столбца? Это вряд ли кажется, что нужно подумать о днях, если я полностью не упустил что-то (что было бы не в первый раз). Правильно написанный компаратор 'qsort()' и ширина объекта из четырех значений (вы никогда не указывали, являются ли они 'int',' unsigned int', 'short' и т. Д.), Должны/должны сделать короткую работу это. – WhozCraig