fork download
  1. #include <iterator>
  2. #include <algorithm>
  3. #include <iostream>
  4. #include <vector>
  5. #include <random>
  6.  
  7. template <typename container>
  8. inline void
  9. sort
  10. (typename container::iterator beginning,
  11. typename container::iterator end )
  12. {
  13. typedef typename container::value_type type_contained;
  14. typename container::iterator beginning_original_state = beginning;
  15. while (beginning <= end)
  16. {
  17. if (*beginning > *(beginning + 1))
  18. {
  19. // Gotta change the name to something more meaningful
  20. auto check_back(beginning);
  21.  
  22. while (check_back != beginning_original_state && *check_back < *(check_back - 1))
  23. {
  24. std::swap(check_back, --check_back);
  25. }
  26. }
  27. else
  28. {
  29. ++beginning;
  30. }
  31. }
  32. }
  33.  
  34. int main(){
  35. std::vector<int> v = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
  36. std::mt19937 g(21356723);
  37. std::shuffle(v.begin(), v.end(), g);
  38.  
  39. std::cout << "input: ";
  40. std::copy(v.begin(), v.end(), std::ostream_iterator<int>(std::cout, " "));
  41. std::cout << std::endl;
  42.  
  43. //std::sort(v.begin(), v.end());
  44. sort<std::vector<int>>(v.begin(), v.end());
  45.  
  46. std::cout << "output: ";
  47. std::copy(v.begin(), v.end(), std::ostream_iterator<int>(std::cout, " "));
  48. std::cout << std::endl;
  49.  
  50. }
Time limit exceeded #stdin #stdout 5s 16064KB
stdin
Standard input is empty
stdout
input: 3 10 7 9 8 2 5 1 4 6