Ошибка сегментации при быстрой сортировке ⇐ C++
Ошибка сегментации при быстрой сортировке
Мне нужно реализовать быструю сортировку моего университетского задания. Ниже приведена реализация быстрой сортировки, которую я написал на C++:
#include #include #include #include шаблон void fast_forward_order(T(&container), std::size_t Lower_bound = std::size_t(0), std::size_t Upper_bound = S - 1) { если (нижняя_ граница >= верхняя_ граница) { возвращаться; } // Выбор последнего элемента в качестве опорного const T& Pivot_element = контейнер[upper_bound]; std::size_t rhs_pointer = Upper_bound; std::size_t lhs_pointer = low_bound; в то время как (lhs_pointer < rhs_pointer) { while(container[lhs_pointer] lhs_pointer) { --rhs_pointer; } станд::своп( контейнер[lhs_pointer], контейнер[rhs_pointer] ); } станд::своп( контейнер[lhs_pointer], контейнер[upper_bound] ); Quick_forward_order (контейнер, нижняя граница, lhs_pointer - 1); Quick_forward_order (контейнер, lhs_pointer + 1, Upper_bound); }; шаблон void fast_reverse_order(T(&container), std::size_t Lower_bound = std::size_t(0), std::size_t Upper_bound = S - 1) { если (нижняя_ граница >= верхняя_ граница) { возвращаться; } // Выбор последнего элемента в качестве опорного const T& Pivot_element = контейнер[upper_bound]; std::size_t rhs_pointer = Upper_bound; std::size_t lhs_pointer = low_bound; в то время как (lhs_pointer < rhs_pointer) { while(container[lhs_pointer] >= Pivot_element && lhs_pointer
Мне нужно реализовать быструю сортировку моего университетского задания. Ниже приведена реализация быстрой сортировки, которую я написал на C++:
#include #include #include #include шаблон void fast_forward_order(T(&container), std::size_t Lower_bound = std::size_t(0), std::size_t Upper_bound = S - 1) { если (нижняя_ граница >= верхняя_ граница) { возвращаться; } // Выбор последнего элемента в качестве опорного const T& Pivot_element = контейнер[upper_bound]; std::size_t rhs_pointer = Upper_bound; std::size_t lhs_pointer = low_bound; в то время как (lhs_pointer < rhs_pointer) { while(container[lhs_pointer] lhs_pointer) { --rhs_pointer; } станд::своп( контейнер[lhs_pointer], контейнер[rhs_pointer] ); } станд::своп( контейнер[lhs_pointer], контейнер[upper_bound] ); Quick_forward_order (контейнер, нижняя граница, lhs_pointer - 1); Quick_forward_order (контейнер, lhs_pointer + 1, Upper_bound); }; шаблон void fast_reverse_order(T(&container), std::size_t Lower_bound = std::size_t(0), std::size_t Upper_bound = S - 1) { если (нижняя_ граница >= верхняя_ граница) { возвращаться; } // Выбор последнего элемента в качестве опорного const T& Pivot_element = контейнер[upper_bound]; std::size_t rhs_pointer = Upper_bound; std::size_t lhs_pointer = low_bound; в то время как (lhs_pointer < rhs_pointer) { while(container[lhs_pointer] >= Pivot_element && lhs_pointer
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение