fork(1) download
  1. #include <iostream>
  2. #include <algorithm>
  3. #include <functional>
  4.  
  5. void print( const int a[], std::size_t n, std::size_t position_of_active_item )
  6. {
  7. std::cout << "{ " ;
  8. for( std::size_t i = 0 ; i < n ; ++i )
  9. if( i == position_of_active_item ) std::cout << '[' << a[i] << "] " ;
  10. else std::cout << a[i] << ' ' ;
  11. std::cout << "}\n" ;
  12. }
  13.  
  14.  
  15. int main()
  16. {
  17. int a[] = { -5, 16, 8, 9, -12, 0, -3 } ;
  18. constexpr std::size_t N = sizeof(a) / sizeof(*a) ;
  19. std::size_t position_of_active_item = 2 ;
  20. print( a, N, position_of_active_item ) ;
  21.  
  22. // swap active item with the first element
  23. std::swap( a[0], a[position_of_active_item] ) ;
  24. position_of_active_item = 0 ;
  25.  
  26. // sort from the second item onwards
  27. std::sort( a+1, a+N ) ;
  28. print( a, N, position_of_active_item ) ;
  29.  
  30. // bring the active item into place
  31. std::size_t i = 1 ;
  32. for( ; a[i] < a[i-1] && i < N ; ++i ) std::swap( a[i], a[i-1] ) ;
  33. position_of_active_item = i-1 ;
  34. print( a, N, position_of_active_item ) ;
  35. }
  36.  
Success #stdin #stdout 0s 2896KB
stdin
Standard input is empty
stdout
{ -5 16 [8] 9 -12 0 -3 }
{ [8] -12 -5 -3 0 9 16 }
{ -12 -5 -3 0 [8] 9 16 }