Попытка быстрой сортировки массива суффиксов ⇐ C++
-
Гость
Попытка быстрой сортировки массива суффиксов
Я пытаюсь применить быструю сортировку к массиву суффиксов. Массив суффиксов содержит все начальные индексы строки. Первый раздел работает, остальные нет. Я просмотрел множество примеров кода быстрой сортировки и не могу понять, почему сортировка выполняется неправильно. В настоящее время я сортирую массив только от 0 до 20 в качестве теста.
main.cpp
#include #include int CompareSuffix(const std::string &text, unsigned int suffixIndexA, unsigned int suffixIndexB); unsigned int suffixArrayPartition(const std::string &text, unsigned int *suffixArray, unsigned int left, unsigned int right); void suffixArrayQuickSort(const std::string &text, unsigned int *suffixArray, unsigned int left, unsigned int right); void suffixArraySwap(unsigned int *suffixArray, unsigned int indexA, unsigned int indexB); int main(int argc, char const *argv[]) { std::string pi = "141592653589793238462643383279502884197169399375105820974944592307816406286208998628034825342117067"; std::string search = "209"; // индекс 3 unsigned int *suffixArray = новый unsigned int[pi.size()]; for (int i = 0; i
Я пытаюсь применить быструю сортировку к массиву суффиксов. Массив суффиксов содержит все начальные индексы строки. Первый раздел работает, остальные нет. Я просмотрел множество примеров кода быстрой сортировки и не могу понять, почему сортировка выполняется неправильно. В настоящее время я сортирую массив только от 0 до 20 в качестве теста.
main.cpp
#include #include int CompareSuffix(const std::string &text, unsigned int suffixIndexA, unsigned int suffixIndexB); unsigned int suffixArrayPartition(const std::string &text, unsigned int *suffixArray, unsigned int left, unsigned int right); void suffixArrayQuickSort(const std::string &text, unsigned int *suffixArray, unsigned int left, unsigned int right); void suffixArraySwap(unsigned int *suffixArray, unsigned int indexA, unsigned int indexB); int main(int argc, char const *argv[]) { std::string pi = "141592653589793238462643383279502884197169399375105820974944592307816406286208998628034825342117067"; std::string search = "209"; // индекс 3 unsigned int *suffixArray = новый unsigned int[pi.size()]; for (int i = 0; i
Мобильная версия