Bonjour à tous,
Je m'amuse avec std::sort_heap
, mais le résultat que j'obtiens n'est pas bon et je ne vois vraiment pas pourquoi. Voici tout d'abord le code.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 | #include <algorithm> #include <iostream> #include <iterator> /** * @brief Overload of std::ostream & operator<< to print C-arrays of any type. */ template <class Stream, typename T, std::size_t N> typename std::enable_if<!std::is_same<T, char>::value, Stream>::type & operator<<(Stream & out, const T (&array)[N]) { static_assert(std::is_same<Stream, std::ostream>::value, "Operator<< is only available for std::ostream type !"); out << "{"; for (std::size_t i = 0; i < N; ++i) { out << array[i]; if (i + 1 != N) { out << ", "; } } out << "}"; return out; } namespace infozero { template <typename T, std::size_t N> void heap_sort(T (&array)[N]) { std::sort_heap(std::begin(array), std::end(array)); } } int main(void) { int array[] = {-8, -7, 0, 42, 3}; std::cout << "Avant le tri : " << array << std::endl; infozero::heap_sort(array); std::cout << "Après le tri : " << array << std::endl; return 0; } |
Et voici le résultat qui me cause problème.
1 2 | Avant le tri : {-8, -7, 0, 42, 3} Après le tri : {-7, 0, 42, 3, -8} |
Je ne comprends pas pourquoi le -8 bouge. Il ne devrait pas. Merci d'avance pour vos lumières,
informaticienzero
+0
-0