Changeset 595 for BAORadio/AmasNancay/trunk/mergeAnaFiles.cc
- Timestamp:
- Nov 7, 2011, 10:47:08 AM (13 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
BAORadio/AmasNancay/trunk/mergeAnaFiles.cc
r591 r595 90 90 "The median of an empty list is undefined."; 91 91 } 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 92 }; 93 template<class RandAccessIter> 94 double median(RandAccessIter begin, RandAccessIter end) 95 throw(median_of_empty_list_exception){ 96 if(begin == end){ throw median_of_empty_list_exception(); } 97 std::size_t size = end - begin; 98 std::size_t middleIdx = size/2; 99 RandAccessIter target = begin + middleIdx; 100 std::nth_element(begin, target, end); 101 102 if(size % 2 != 0){ //Odd number of elements 103 return *target; 104 }else{ //Even number of elements 105 double a = *target; 106 RandAccessIter targetNeighbor= target-1; 107 std::nth_element(begin, targetNeighbor, end); 108 return (a+*targetNeighbor)/2.0; 109 } 110 } 111 111 112 112 //-------------
Note: See TracChangeset
for help on using the changeset viewer.