Update algorithm.h

This commit is contained in:
blueloveTH 2025-03-12 19:24:20 +08:00
parent a4f186057d
commit b320e8d9a3

View File

@ -8,7 +8,7 @@
do { \ do { \
T* __first = ptr; \ T* __first = ptr; \
int __len = count; \ int __len = count; \
while(__len > 8) { \ while(__len >= 8) { \
int __l2 = __len >> 1; \ int __l2 = __len >> 1; \
T* __m = __first + __l2; \ T* __m = __first + __l2; \
if(less((*__m), (key))) { \ if(less((*__m), (key))) { \
@ -18,9 +18,23 @@
__len = __l2; \ __len = __l2; \
} \ } \
} \ } \
while(__len && less(*__first, (key))) { \ switch(__len) { \
++__first; \ case 7: \
--__len; \ if(less(*__first, (key))) __first++; \
case 6: \
if(less(*__first, (key))) __first++; \
case 5: \
if(less(*__first, (key))) __first++; \
case 4: \
if(less(*__first, (key))) __first++; \
case 3: \
if(less(*__first, (key))) __first++; \
case 2: \
if(less(*__first, (key))) __first++; \
case 1: \
if(less(*__first, (key))) __first++; \
case 0: break; \
default: c11__unreachable(); \
} \ } \
*(out_index) = __first - (T*)(ptr); \ *(out_index) = __first - (T*)(ptr); \
} while(0) } while(0)