У меня есть массив из 64 структур, которые содержат приличный объем данных (структура составляет около 128 байтов, так что это 8192 байта, которые должны быть перегруппированы).Массив должен быть отсортирован на основе одного байта без знака в каждой структуре.Интересным свойством моих данных является то, что, вероятно, будет много дубликатов отсортированного значения - это означает, что если вы избавитесь от всех дубликатов, массив может иметь длину только 10 уникальных элементов, но это не дано.
После сортировки мне нужно создать стек, в котором будут храниться размер и тип, с которого начинается каждый уникальный запуск байтов: так что если я получу отсортированные значения: 4,4,4,9,9,9,9,9,14,14 стек будет: (4,3), (9,5), (14,2)
Я подумал, что будет несколько хороших оптимизаций, которые я мог бы выполнить в этих условиях.Если я делаю heapsort, я могу создавать стек во время сортировки, но будет ли это быстрее, чем qsort, а затем создавать стек после слов?Будет ли какой-нибудь алгоритм сортировки работать медленнее из-за больших структур, которые я использую?Можно ли оптимизировать, потому что я сравниваю только байты?
Кстати: язык c ++
Спасибо.