Несколько вопросов о сортировке

Я нашел путь, который улучшается (насколько я протестировал) согласно quicksort алгоритму вне того, что было уже сделано. Я работаю над тестированием его, и затем я хочу вывести слово об этом. Однако я ценил бы некоторую справку с некоторыми вещами. Таким образом, вот мои вопросы. Весь мой код находится в C++ между прочим.

  1. Один из видов, которыми я был по сравнению со своим quicksort, является станд.:: вид из Библиотеки Стандарта C++. Однако это, кажется, чрезвычайно медленно. Я только сортирую массивы ints и longs, но это, кажется, приблизительно в 8-10 раз медленнее и, чем мой quicksort и, чем стандарт quicksort Бентли и McIlroy (и возможно Sedgewick). У кого-либо есть какие-либо идеи относительно того, почему это настолько медленно? Код, который я использую для вида, является просто станд.:: вид (a, a+numelem); где массива longs или ints и numelem является числом элементов в массиве. Числа очень случайны, и я попробовал различные размеры, а также различные суммы повторных элементов. Я также попробовал qsort, но это еще хуже, как я ожидал.Править: Проигнорируйте этот первый вопрос - он был разрешен.

  2. Я хотел бы найти, что более хорошие quicksort реализации соответствуют моему quicksort. До сих пор у меня есть Бентли-McIlroy один, и я имею также по сравнению с первой опубликованной версией двойного центра Vladimir Yaroslavskiy quicksort. Кроме того, я планирую портирование timsort (который является сортировкой слиянием, которой я верю), и оптимизированный двойной центр quicksort из источника jdk 7. О чем других хороших quicksorts реализациях Вы знаете? Если они не находятся в C или C++, который мог бы быть хорошо, потому что я довольно хорош в портировании, но я предпочел бы C или C++, если Вы знаете о них.

  3. Как Вы рекомендовали бы вынуть слово о моих дополнениях к quicksort? До сих пор мой quicksort, кажется, значительно быстрее, чем весь другой quicksorts, против которого я протестировал его. Основной источник его скорости - то, что она обрабатывает повторенные элементы намного более эффективно, чем другие методы, которые я нашел. Это почти полностью уничтожает худшее поведение случая, не добавляя много времени в проверке повторные элементы. Я отправил об этом на форумах Java, но не получил ответа. Я также пытался писать в Jon Bentley, потому что он работал с Vladimir на своем двойном центре quicksort и не получил ответа (хотя я не был ужасно удивлен этим). Я должен написать работу об этом и поместить его в arxiv.org? Я должен отправить на некоторых форумах? Там некоторые списки рассылки, на который я должен отправить? Я работал над этим в течение некоторого времени теперь, и мой метод законен. У меня действительно есть некоторый опыт с публикацией исследования, потому что я - кандидат доктора философии в вычислительной физике. Я должен попытаться приблизиться к кому-то в Кафедре информатики моего университета? Между прочим, я также разработал другой двойной центр quicksort, но это не лучше, чем мой единственный центр quicksort (хотя это лучше, чем двойной центр Vladimir quicksort с некоторыми наборами данных).

Я действительно ценю Вашу справку. Я просто хочу добавить, что я могу к вычислительному миру. Я не интересуюсь патентованием этого или любой абсурдной подобной вещи.

15
задан Justin Peel 20 January 2010 в 22:56
поделиться

2 ответа

Если у вас есть уверенность в своей работе, определенно попробуйте обсудить его с кем-то знакомствами в своем университете как можно скорее. Недостаточно показать, что ваш код работает быстрее, чем другая процедура на вашем компьютере. Вы должны математически доказать, что бы ни получили усиление производительности, вы достигли благодаря анализу вашего алгоритма. Я бы сказал, что первое, что нужно сделать, это убедиться, что оба алгоритма, которые вы сравниваете, реализованы и скомпилированы оптимально - вы можете просто обмануть себя здесь. Вероятность человека, достижившего такого заметного улучшения по такому важным методам сортировки, не имеющим ничего хорошего знания о его принятых вариантах, просто кажется, что из них. Тем не менее, не дай мне отговорить вас. Это должно быть интересно в любом случае. Вы были бы готовы опубликовать код здесь? ... Кроме того, поскольку QuickSort особенно уязвим к худшим сценариям, тесты, которые вы решите пройти, могут иметь огромный эффект, как будет выбора поворотах. В общем, я бы сказал, что любые данные, установленные с большим количеством эквивалентных элементов или один, который уже сортируется, никогда не бывает хорошим выбором для Quicksort - и уже есть известные способы борьбы с этой ситуацией, а также лучшие альтернативные методы сортировки Отказ

11
ответ дан 1 December 2019 в 04:00
поделиться

Если вы действительно сделали прорыв и иметь математику, чтобы доказать это, вы должны попытаться получить его опубликованным в журнале ACM . Это определенно один из самых престижных журналов для информатики.

Второе лучшее было бы одному из журналов IEEE , таких как транзакции по программному проекту .

7
ответ дан 1 December 2019 в 04:00
поделиться
Другие вопросы по тегам:

Похожие вопросы: