fork download
  1. #include <iostream>
  2. #include <algorithm>
  3. #include <iterator>
  4. #include <vector>
  5.  
  6. double central_mean(const std::vector<int> &v, size_t i)
  7. {
  8. return i & 1 ? v.at(i) : 0.5 * (v.at(i - 1) + v.at(i));
  9. };
  10.  
  11.  
  12. int main() {
  13. std::vector<int> v1 {
  14. -1, 2, 1, 0, 7, 2, 3, 4, 0, 1, 5, 0, 2, 0, 0, 2
  15. };
  16. auto v2 {v1};
  17.  
  18. std::sort(v1.begin(), v1.end());
  19. std::cout << "Sort:\n";
  20. std::copy(v1.begin(), v1.end(), std::ostream_iterator<int>(std::cout, " "));
  21. double median1 = central_mean(v1, v1.size() / 2);
  22.  
  23. std::cout << "\nMedian: " << median1 << '\n';
  24.  
  25. std::nth_element(v2.begin(), v2.begin() + v2.size()/2, v2.end());
  26. std::cout << "Nth_element:\n";
  27. std::copy(v2.begin(), v2.end(), std::ostream_iterator<int>(std::cout, " "));
  28. double median2 = central_mean(v2, v2.size() / 2);
  29.  
  30. std::cout << "\nMedian: " << median2 << '\n';
  31.  
  32. return 0;
  33. }
Success #stdin #stdout 0s 15240KB
stdin
Standard input is empty
stdout
Sort:
-1 0 0 0 0 0 1 1 2 2 2 2 3 4 5 7 
Median: 1.5
Nth_element:
0 -1 0 0 1 0 1 0 2 2 5 4 3 2 7 2 
Median: 1