1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
|
void ngx_queue_sort(ngx_queue_t *queue, ngx_int_t (*cmp)(const ngx_queue_t *, const ngx_queue_t *)) { ngx_queue_t *q, tail;
q = ngx_queue_head(queue);
if (q == ngx_queue_last(queue)) { return; } q = ngx_queue_middle(queue);
ngx_queue_split(queue, q, &tail);
ngx_queue_sort(queue, cmp); ngx_queue_sort(&tail, cmp);
ngx_queue_merge(queue, &tail, cmp); }
|