blob: d2d1eff23e9cb2dd63d5719199f94214ddd0a5a4 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
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;
}
}
|