📄 rg_ssort.c
字号:
/*** ssort() -- Fast, small, qsort()-compatible Shell sort**** by Ray Gardner, public domain 5/90*/#include <stddef.h>#include "snipsort.h"void ssort (void *base, size_t nel, size_t width, int (*comp)(const void *, const void *)){ size_t wnel, gap, wgap, i, j, k; char *a, *b, tmp; wnel = width * nel; for (gap = 0; ++gap < nel;) gap *= 3; while ( gap /= 3 ) { wgap = width * gap; for (i = wgap; i < wnel; i += width) { for (j = i - wgap; ;j -= wgap) { a = j + (char *)base; b = a + wgap; if ( (*comp)(a, b) <= 0 ) break; k = width; do { tmp = *a; *a++ = *b; *b++ = tmp; } while ( --k ); if (j < wgap) break; } } }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -