From: Kevin M. Rosenberg Date: Sun, 17 Dec 2000 19:08:06 +0000 (+0000) Subject: r269: Improved sort statistics X-Git-Tag: debian-4.5.3-3~748 X-Git-Url: http://git.kpe.io/?p=ctsim.git;a=commitdiff_plain;h=133c98cb0d4721c9e3b552321b73f4869fba07d6 r269: Improved sort statistics --- diff --git a/libctsim/imagefile.cpp b/libctsim/imagefile.cpp index 81de741..3e97fb2 100644 --- a/libctsim/imagefile.cpp +++ b/libctsim/imagefile.cpp @@ -9,7 +9,7 @@ ** This is part of the CTSim program ** Copyright (C) 1983-2000 Kevin Rosenberg ** -** $Id: imagefile.cpp,v 1.20 2000/12/16 06:12:47 kevin Exp $ +** $Id: imagefile.cpp,v 1.21 2000/12/17 19:08:06 kevin Exp $ ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License (version 2) as @@ -274,20 +274,16 @@ ImageFile::statistics (double& min, double& max, double& mean, double& mode, dou mode = (max_binindex * spread / (nbin - 1)) + min; int nPixels = nx * ny; - std::list vecImage; + std::vector vecImage; for (int ix5 = 0; ix5 < nx; ix5++) for (int iy = 0; iy < ny; iy++) - vecImage.push_front (v[ix5][iy]); - vecImage.sort(); - std::list::const_iterator iter = vecImage.begin(); - for (int i = 0; i < (nPixels / 2) - 1; i++) - iter++; // Advance iterator to (nPixels / 2) - 1; - - if (nPixels % 2) { // Odd - iter++; - median = *iter; - } else // Even - median = (*iter++ + *iter) / 2; + vecImage.push_back (v[ix5][iy]); + std::sort(vecImage.begin(), vecImage.end()); + + if (nPixels % 2) // Odd + median = vecImage[((nPixels - 1) / 2)]; + else // Even + median = (vecImage[(nPixels / 2) - 1] + vecImage[nPixels / 2]) / 2; }