Являются ли алгоритмы сортировки, используемые различными методами сортировки в NSArray stable? (Как и в случае, они являются алгоритмами «стабильного сортирования», когда элементы с таким же ключом сортировки сохраняют относительные порядки.)Являются ли алгоритмы сортировки используемыми стабильными сортами NSArray?
ответ
В doc подробных данных об окончательном заказе одинаковых предметов не приводится.
Поэтому я считаю, что любые предположения о заказе были бы плохими идеями. Даже если вы экспериментально определите, что такое заказ, это может измениться в зависимости от количества элементов в массиве или какой версии iOS выполняет сортировку.
Для меня я придерживался обещаний, предоставленных документацией.
Я бы не стал им доверять, даже если бы я полностью его протестировал, Apple может изменить используемый алгоритм (ы) в следующей версии, оказывая любые тесты бессмысленно и может вызвать некоторые странные ошибки. – JustSid
Документация * указывает *, она просто похоронена за документацией для 'NSSortOptions': https://developer.apple.com/library/ios/#documentation/Cocoa/Reference/Foundation/Miscellaneous/Foundation_Constants/Reference/reference. html # // apple_ref/doc/c_ref/NSSortOptions – wxactly
только «официальный» ответ, который я нашел про это 2002 mailing list post Крис Кейн от компании Apple:
Устойчивость методов сортировки NSArray/NSMutableArray является неопределенным, поэтому следует ожидать, что они неустойчиво. Будучи неопределенным, ситуация может также измениться с момента выпуска на выпуск, хотя я не (я) ожидаю, что это вероятно. Текущая реализация использует быструю сортировку, версию алгоритма, почти идентичную процедуре qsort() BSD qsort(). Несколько экспериментов, найденных в какой-то момент, что было трудно сделать лучше, чем для общих типов данных, мы провели на тестах. [Конечно, если у Вас есть дополнительная информация о данных, отсортированных, можно использовать другие алгоритмы или модификации, которые помогают тот случай.]
Я не знаю, является ли это все еще верно, учитывая, сколько лет пост, но, вероятно, лучше всего предположить, что методы сортировки NSArray
: не стабильный.
Стабильный сорт не гарантируется, если вы не используете NSSortStable
. Из documentation on NSSortOptions:
NSSortStable
Указывает, что отсортированные результаты должны вернуть по сравнению элементы имеют одинаковое значение в порядке их возникновения первоначально.
Если этот параметр не указан, равные объекты могут быть возвращены или не возвращены в исходном порядке.
Если вам нужно, чтобы гарантировать стабильную сортировку, попробовать что-то вроде:
[array sortWithOptions:NSSortStable usingComparator:^NSComparisonResult(id obj1, id obj2) {
return [obj1 compare:obj2];
}];
'(void) sortWithOptions: usingComparator:' работает для изменяемых массивов ... есть также '(NSArray *) sortedArrayWithOptions: usingComparator:' если это плавает на вашей лодке – wxactly
- 1. Являются ли приложения AIR стабильными?
- 2. Являются ли метрические идентификаторы рендеринга VMWare стабильными?
- 3. Являются ли экземпляры EC2 стабильными для вычислений?
- 4. Являются ли эволюционные алгоритмы биотехнологией?
- 5. Являются ли эти алгоритмы эквивалентными?
- 6. Когда использовать алгоритмы сортировки
- 7. (Когда) являются параллельными сортами практическими и как вы пишете эффективный?
- 8. Являются ли github камни менее стабильными, чем драгоценные камни rubyforge?
- 9. Являются ли Ruby «Previews» стабильными версиями или бета-версиями?
- 10. Являются ли мои переходы спящего режима работоспособными/стабильными?
- 11. Являются ли операторы SQL SELECT по определению стабильными?
- 12. сортировки NSArray
- 13. Matlab - алгоритмы сортировки
- 14. Многопоточные алгоритмы сортировки
- 15. Являются ли все алгоритмы грубой силы экспоненциальными?
- 16. Линейные алгоритмы сортировки
- 17. алгоритмы сортировки в python
- 18. Являются ли ModelForms в django используемыми только для POSTing?
- 19. Являются ли объекты запроса JPA возвращаемыми EntityManager повторно используемыми?
- 20. Являются ли комментарии в коде CakePHP действительно даже используемыми/необходимыми?
- 21. Являются ли amazon browsenodes все еще широко используемыми?
- 22. Являются ли экземпляры ActionCable Channels совместно используемыми клиентами?
- 23. Являются ли микроформаты, такие как hProduct, действительно используемыми или полезными?
- 24. Являются ли состояния Flex View используемыми в реальных проектах
- 25. отмена сортировки nsarray
- 26. Все возможные алгоритмы алгоритма сортировки
- 27. Алгоритмы сортировки Java Collections Framework
- 28. Визуально выполняются различные алгоритмы сортировки
- 29. Существуют ли алгоритмы сортировки данных (приблизительно?), Которые могут быть изменены?
- 30. Функция сортировки NSArray на Swift
ли вы дать ему попробовать? –
@TDeBailleul «Давать ему попробовать» в этом случае не очень полезно. Сортировка может быть стабильной в некоторых случаях, но не в других, в зависимости от размера данных, способа построения массива и т. Д. – omz
Хорошо, я думал, что поведение всегда было одинаковым. Хорошо знать. –