From: Laurent MAZET Date: Mon, 29 Sep 2025 17:31:52 +0000 (+0200) Subject: correct aberation search X-Git-Tag: v1.0~81 X-Git-Url: https://secure.softndesign.org/git/?a=commitdiff_plain;h=e802f440ea9a9f2cf86de4b31a7a829b138dfe39;p=benchmarks.git correct aberation search --- diff --git a/test.c b/test.c index f91ec7a..865389f 100644 --- a/test.c +++ b/test.c @@ -169,25 +169,27 @@ int main (int argc, char *argv[]) } if (abe_per != 0) { - for (int j = 1; j < nb - 1; j++) { - int change_done = 0; - for (int i = 1; i < nb - 1; i++) { - if (buffer[i + 1] < buffer[i]) { - unsigned int tmp = buffer[i]; - buffer[i] = buffer[i + 1]; - buffer[i + 1] = tmp; - change_done = 1; + int n = nb * abe_per / 100; + for (int j = 0; j < n / 2; j++) { + int imax = 0; + int imin = 0; + for (int i = 1; i < nb; i++) { + if (buffer[i] > buffer[imax]) { + imax = i; + } + if (buffer[i] < buffer[imin]) { + imin = i; } } - if (!change_done) { - break; + for (int i = 0, jump = 0; i < nb; i++) { + if ((i == imax) || (i == imin)) { + jump++; + } else { + buffer[i - jump] = buffer[i]; + } } + nb -= 2; } - int n = nb * abe_per / 100; - for (int i = 0; i < nb - n; i++) { - buffer[i] = buffer[i + n / 2]; - } - nb -= n; } char unit[32] = { 0 };