Я пытаюсь понять разницу, если следующие алгоритмы сортировки получат набор двоичных входных данных, т.е. набор только 0 и 1.
а) пирамидальная сортировка б) быстрая сортировка в) сортировка слиянием г) сортировка вставками.
Я ищу разницу в количестве сравнений, необходимых для сортировки списка.
Точный вопрос: как ограничение элементов 0 и 1 может повлиять на общее количество выполненных сравнений и дать результирующую границу \тета. С моей точки зрения, в сортировке слиянием и сортировке вставками не будет никаких изменений, поскольку они потребуют одинакового количества сравнений.
Однако совсем по другому поводу я думаю, что если мы знаем о данных (т.е. они равны 0 или 1), то в дереве решений не будет n! факторные выходы. Поскольку мы можем уменьшить его до нескольких, я не уверен в этом дереве решений . Пожалуйста, поделитесь своими мыслями по этому поводу.
Сортировка слиянием — это забывчивый алгоритм, то есть он будет выполнять одни и те же шаги (за исключением тех, которые участвуют в слиянии) для каждой входной последовательности, поэтому его среднее и наихудшее время будут на входах, ограниченных последовательности.
Сортировка вставками становится интересной для ваших входных данных, но нетрудно заметить, что время выполнения в худшем случае все равно будет : Посмотрите на количество свопов, которые нужно будет сделать на входе . Средняя производительность, как обычно, более сложная, и я не готов претендовать на какие-либо результаты за это.
Быстрая сортировка еще более интересна, так как первый вызов partition оставит массив в отсортированном порядке после свопы. Если бы QS был написан с учетом этого, то его поведение изменилось бы с в среднем (или в худшем случае) . Если бы этот факт не был выявлен, то после первого разбиения последующие разбивали бы каждый подмассив на две части, одна из которых содержала бы один элемент, а другая — все остальные, что приводило бы к производительность как в среднем, так и в худшем случае.
Ой! Я только что заметил, что heapsort также был в вашем списке. Я должен вернуться к вам по этому поводу.
Лучший случай = данные уже отсортированы Средний случай = некоторые данные отсортированы, некоторые данные не отсортированы. Худший случай = данные полностью не отсортированы
Сортировка слиянием: Лучшее = NlogN , AVE=NlogN, ХУДШЕЕ = NlogN
Сортировка вставками = Лучший = N , AVE=N^2, ХУДШИЙ = N^2
Быстрая сортировка = NlogN , AVE=NlogN, ХУДШЕЕ = N^2
Айман Хурие
Рик Декер
Рохит