Всем привет. вообщем есть массив: some_array db 10000h dup (0) в который в последствии генератором случайных чисел загоняются некоторые значения. Размер "структурной единицы" массива условно равен 128 битам Нужно отсортировать "структурные единицы" по возрастанию. Я использовал 4 регистра и пузырьковый алгоритм. Т.е. сперва происходит сортировка по старшим двордам, потом по более младшим и т.д. Хотя, понимаю, что устарело это все. Уже есть MMX, SSE и SSEII и прочие хитрости... Вообщем, посоветуйте, как лучше пересортировать эти значения.
Ну, такое впечатление, что qsort даст в этом случае лучшие результаты. Если бы была более подробная информация о виде 128 битных чисел, можно было бы подумать о сравнении всего 128 битного числа за один раз, поскольку сортировка в пределах дворда - прямое замедление алгоритма в 4 раза. Еще многое зависит от процессора на который хочется запустить алгоритм - целочисленные SSEII не поддерживаются нигде ниже P4.
Нетрудно на регистрах делать сравнения не делая ветвлений. А в остальном бежать некуда - память всё равно не обгонишь...