Нет, на это нельзя рассчитывать, к сожалению. Предположим, у вас есть массив (два поля в каждой записи, используемые для проверки, но только первое поле, используемое для сортировки):
BBBB,1
BBBB,2
AAAA,3
Быстрая сортировка может сравнить BBBB, 1 с AAAA, 3 и поменять их местами, давая:
AAAA,3
BBBB,2
BBBB,1
Если следующим шагом будет сравнение BBBB, 2 с BBBB, 1, ключи будут такими же, и, поскольку BBBB, 2 имеет адрес меньше, чем BBBB, 1, обмен не произойдет. Для стабильной сортировки вы должны были получить:
AAAA,3
BBBB,1
BBBB,2
Единственный способ сделать это - прикрепить начальный адрес указателя (не его текущий адрес) и отсортировать его, как и другие ключи. Таким образом, исходный адрес становится второстепенной частью ключа сортировки, так что BBBB,1
в конечном итоге окажется до BBBB,2
, независимо от того, куда идут две строки BBBB
в процессе сортировки.