From 7ba44efaefa7c8f67fa2ab8132bd813e9461ffbf Mon Sep 17 00:00:00 2001 From: Jiri Pittner Date: Thu, 20 Nov 2025 15:18:58 +0100 Subject: [PATCH] added network sort up to size 8 --- qsort.h | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/qsort.h b/qsort.h index 12d528b..3b47a66 100644 --- a/qsort.h +++ b/qsort.h @@ -356,6 +356,35 @@ int parity=0; return parity; } +template +inline int netsort_7(T *data) +{ +int parity=0; +CONDSWAP(0,6);CONDSWAP(2,3);CONDSWAP(4,5); +CONDSWAP(0,2);CONDSWAP(1,4);CONDSWAP(3,6); +CONDSWAP(0,1);CONDSWAP(2,5);CONDSWAP(3,4); +CONDSWAP(1,2);CONDSWAP(4,6); +CONDSWAP(2,3);CONDSWAP(4,5); +CONDSWAP(1,2);CONDSWAP(3,4);CONDSWAP(5,6); +return parity; +} + +template +inline int netsort_8(T *data) +{ +int parity=0; +CONDSWAP(0,2);CONDSWAP(1,3);CONDSWAP(4,6);CONDSWAP(5,7); +CONDSWAP(0,4);CONDSWAP(1,5);CONDSWAP(2,6);CONDSWAP(3,7); +CONDSWAP(0,1);CONDSWAP(2,3);CONDSWAP(4,5);CONDSWAP(6,7); +CONDSWAP(2,4);CONDSWAP(3,5); +CONDSWAP(1,4);CONDSWAP(3,6); +CONDSWAP(1,2);CONDSWAP(3,4);CONDSWAP(5,6); +return parity; +} + +//see https://bertdobbelaere.github.io/sorting_networks.html for more + + #undef CONDSWAP @@ -384,6 +413,12 @@ switch(n) case 6: return netsort_6(data); break; + case 7: + return netsort_7(data); + break; + case 8: + return netsort_8(data); + break; default: return ptrqsortup(data,data+n-1); break;