Я пишу веб-приложение, которое задает пользователю ряд вопросов, которые являются просто субъективными сравнениями двух значений. Они выбирают тот, который больше, и он представляет собой следующее сравнение, необходимое для сортировки. Цель состоит в том, чтобы отсортировать 58 элементов и отобразить упорядоченный список.Как написать QuickSort с сопоставлениями с событиями?
Я хочу использовать QuickSort, так как 80% времени потребуется меньше сравнений, чем сортировка слияния, что требует 342 сравнения. (Я написал программу, которая провела 5 000 000 симуляций сортировки массивов из 58 элементов и обнаружила, что 342 был 80-м процентилем для количества сравнений, требуемых QS.) Поскольку это выполняется в JavaScript, мне нужен алгоритм для ожидания событие каждый раз, когда требуется сравнение, а затем, когда событие запускается, продолжите алгоритм. Мне нелегко обдумывать, что это должно было бы выглядеть.
Я уверен, что для реализации QS этот путь - если только не существует какого-то умного метода с закрытием JavaScript, о котором я не думаю - я не могу сделать это рекурсивно. Я нашел iterative implementation of QS, и я пытаюсь выяснить, как я могу разделить его так, чтобы триггер события продолжал алгоритм, с которого он остановился.
Я бы опубликовал код, который у меня есть, но, честно говоря, я думаю, что, учитывая, как он смешался и разобщен, это принесет больше вреда, чем пользы. Мне бы очень понравилась реализация JavaScript, но даже псевдокод был бы полезен.
Я думаю, вам нужно сделать это рекурсивно (возможно, с уменьшением), потому что рекурсия должна произойти через обратный вызов –