void streakMaximum( image img ) { int r, c, pixA, pixB, pixC, pixD, max, avg ; for ( r = 0; r<img.nrows; r++ ) for ( c = 0; c<img.ncols-3; c++ ) { pixA = getPixel( img, r, c ); pixB = getPixel( img, r, c+1 ); pixC = getPixel( img, r, c+2 ); pixD = getPixel( img, r, c+3 ); if ( pixA > pixB && pixA > pixC && pixA > pixD ) max = pixA; if ( pixB > pixC && pixB > pixD ) max = pixB; if ( pixC > pixD ) max = pixC; else max = pixD; setPixel( img, r, c, (unsigned char)max ); } }
Comments: Notice how the maximum is computed in just a few statements. There is no need to perform a sort.