diff options
author | Bobby Bingham <koorogi@koorogi.info> | 2014-10-26 23:33:50 -0500 |
---|---|---|
committer | Bobby Bingham <koorogi@koorogi.info> | 2014-10-26 23:33:50 -0500 |
commit | 40a6ba5c0a5f544bed9c11dc30b751e05a435b1e (patch) | |
tree | 796861388460ebfe3571ebc0699c3834d6eb83cf /distribute.c | |
parent | 1e3548b039bd6b760ca3fe716c98065735110f58 (diff) |
Split helper functions into their own translation units
Diffstat (limited to 'distribute.c')
-rw-r--r-- | distribute.c | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/distribute.c b/distribute.c new file mode 100644 index 0000000..d2d1eff --- /dev/null +++ b/distribute.c @@ -0,0 +1,18 @@ +#include <stddef.h> + +#include "common.h" + +void distribute_buffer(char *base, size_t bufnmel, size_t sortnmel, size_t width, cmpfun cmp) +{ + while (bufnmel && sortnmel) { + char *sorted = base + bufnmel * width; + size_t insertpos = binary_search(base, sorted, sortnmel, width, cmp); + if (insertpos > 0) { + rotate(base, (bufnmel + insertpos) * width, bufnmel * width); + } + + base += (insertpos + 1) * width; + bufnmel -= 1; + sortnmel -= insertpos; + } +} |