From 7e0f021a9aec35fd8e6725e87e3313b101d26f5e Mon Sep 17 00:00:00 2001 From: Tobias Klauser Date: Sun, 27 Jan 2008 11:37:44 +0100 Subject: Initial import (2.0.2-6) --- reference/C/CONTRIB/SNIP/strsort.c | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100755 reference/C/CONTRIB/SNIP/strsort.c (limited to 'reference/C/CONTRIB/SNIP/strsort.c') diff --git a/reference/C/CONTRIB/SNIP/strsort.c b/reference/C/CONTRIB/SNIP/strsort.c new file mode 100755 index 0000000..ed083d1 --- /dev/null +++ b/reference/C/CONTRIB/SNIP/strsort.c @@ -0,0 +1,34 @@ +/* +** strsort() -- Shell sort an array of string pointers via strcmp() +** public domain by Ray Gardner Denver, CO 12/88 +*/ + +#include +#include + +void strsort (char **array, size_t array_size) +{ + size_t gap, i, j; + char **a, **b, *tmp; + + for (gap = 0; ++gap < array_size; ) + gap *= 2; + while (gap /= 2) + { + for (i = gap; i < array_size; i++) + { + for (j = i - gap; ;j -= gap) + { + a = array + j; + b = a + gap; + if (strcmp(*a, *b) <= 0) + break; + tmp = *a; + *a = *b; + *b = tmp; + if (j < gap) + break; + } + } + } +} -- cgit v1.2.3-54-g00ecf