r269: Improved sort statistics
authorKevin M. Rosenberg <kevin@rosenberg.net>
Sun, 17 Dec 2000 19:08:06 +0000 (19:08 +0000)
committerKevin M. Rosenberg <kevin@rosenberg.net>
Sun, 17 Dec 2000 19:08:06 +0000 (19:08 +0000)
libctsim/imagefile.cpp

index 81de74181519a27e93db82c9d4eac71748b5bd2b..3e97fb25c3db7315c25625e8a54ae373ab6299dd 100644 (file)
@@ -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<double> vecImage;
+       std::vector<double> 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<double>::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());\r
+\r
+    if (nPixels % 2)  // Odd
+         median = vecImage[((nPixels - 1) / 2)];\r
+    else                // Even
+      median = (vecImage[(nPixels / 2) - 1] + vecImage[nPixels / 2]) / 2;
 }