#include #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; } }