From 133c98cb0d4721c9e3b552321b73f4869fba07d6 Mon Sep 17 00:00:00 2001 From: "Kevin M. Rosenberg" Date: Sun, 17 Dec 2000 19:08:06 +0000 Subject: [PATCH] r269: Improved sort statistics --- libctsim/imagefile.cpp | 22 +++++++++------------- 1 file changed, 9 insertions(+), 13 deletions(-) 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; } -- 2.34.1