quicksort.h

Epic cinematic scores, sweeping orchestral movements, heroic themes, and stirring emotional peaks, adventure,

July 27th, 2024suno

Lyrics

#pragma once #ifndef ORDERING_DEFINED #define ORDERING_DEFINED typedef enum { Ordering_LessThan = -1, Ordering_Equal = 0, Ordering_GreaterThan = 1, } Ordering; void _null_write_cb(void* userdata, void* loc) { (void)userdata; (void)loc; return; } #endif typedef ptrdiff_t ssize_t; void quicksort_swap(void* write_cb_userdata, char* a, char* b, ssize_t elem_size, void (*write_cb)(void*, void*)) { for (ssize_t i = 0; i < elem_size; i++) { char tmp = a[i]; a[i] = b[i]; b[i] = tmp; } write_cb(write_cb_userdata, (void*)a); write_cb(write_cb_userdata, (void*)b); } ssize_t partition( void* write_cb_userdata, void* cmp_cb_userdata, void* elems_void, ssize_t elem_size, ssize_t low, ssize_t high, void (*write_cb)(void*, void*), Ordering (*cmp_cb)(void*, void*, void*) ) { char* elems = (char*)elems_void; char* pivot = elems+high*elem_size; //quicksort_swap(write_cb_userdata, pivot, elems+high*elem_size, elem_size, write_cb); ssize_t i = low-1; for(ssize_t j = low; j < high; j++) { char* a = elems+j*elem_size; if (cmp_cb(cmp_cb_userdata, a, pivot) <= 0) { i += 1; quicksort_swap(write_cb_userdata, elems + i*elem_size, elems+ j*elem_size, elem_size, write_cb); } } quicksort_swap(write_cb_userdata, elems +(i+1)*elem_size, elems +high*elem_size, elem_size, write_cb); return i+1; } #include <stdlib.h> #include <time.h> int partition_r( void* write_cb_userdata, void* cmp_cb_userdata, void* elems_void, ssize_t elem_size, ssize_t low, ssize_t high, void (*write_cb)(void*, void*), Ordering (*cmp_cb)(void*, void*, void*) ) { char* elems = (char*)elems_void; srand(time(NULL)); int random = low + rand() % (high - low); quicksort_swap(0, elems+random*elem_size, elems+high*elem_size, elem_size, _null_write_cb); return partition(write_cb_userdata, cmp_cb_userdata, elems_void, elem_size, low, high, write_cb, cmp_cb); } void quicksort_impl( void* write_cb_userdata, void* cmp_cb_userdata, void* elems, ssize_t elem_size, ssize_t elem_low, ssize_t elem_high, void (*write_cb)(void*, void*), Ordering (*cmp_cb)(void*, void*, void*) ) { if (elem_low < elem_high) { ssize_t index = partition_r(write_cb_userdata, cmp_cb_userdata, elems, elem_size, elem_low, elem_high, write_cb, cmp_cb); quicksort_impl(write_cb_userdata, cmp_cb_userdata, elems, elem_size, elem_low, index-1, write_cb, cmp_cb); quicksort_impl(write_cb_userdata, cmp_cb_userdata, elems, elem_size, index+1, elem_high, write_cb, cmp_cb); } } void quicksort( void* write_cb_userdata, void* cmp_cb_userdata, void* elems, size_t elem_size, size_t elem_len, void (*write_cb)(void*, void*), Ordering (*cmp_cb)(void*, void*, void*) ) { if (!write_cb) { write_cb=_null_write_cb; } quicksort_impl(wri

Recommended

Beat of the Street
Beat of the Street

rhythmic hip-hop bass-heavy

Jump and Play
Jump and Play

pop cheery

Sonido de amor
Sonido de amor

Spanish balada

Working Girl
Working Girl

introspective emo pop acoustic

VIDA QUE SE INICIA
VIDA QUE SE INICIA

POP, VOCAL, INSTRUMENTOS, LINDO E INSPIRADORA, ELETRÔNICO, BATIDA, ELÉTRICO, VIOLENTO, SINTETIZADORES, EFEITOS ESPECIAIS

Starlightdance
Starlightdance

eurobeat.up tenpo, electronic, synth

My Little Pony Love
My Little Pony Love

brutal death metal

Ocean of Calm
Ocean of Calm

soothing chillout ambient

Mariachi Cuerdas de Guitarra
Mariachi Cuerdas de Guitarra

rhythmic passionate flamenco

The Road of Righteousness
The Road of Righteousness

male voice upbeat pop

I Miss You My Friend
I Miss You My Friend

anthem rock, soft rock, electronic rock, boy band, pop, dance, same male vocal,

Każdy Dzień
Każdy Dzień

Female vocals, indie, catchy, swing, e, electro

Micro world
Micro world

Relaxing, strong jazz, piano and saxophone, quirky tunes, whimsical, ambient, classical

Cega
Cega

soul, blue, r&b, blues, bossa nova, female voice

Metallic Dreams S. Peak
Metallic Dreams S. Peak

heavy metal keyboard synth

Джин Троица
Джин Троица

melancholic, rock, metal, electronic, heavy metal, synth, hard rock, female vocal, female singer, emo, emotional, piano

Cloisters and Cages XVI
Cloisters and Cages XVI

Irrie, full Orchestra, slow methodic beat, catchy, rhythmic, dark, drum & base, sad, duet, strings, emotional, grity,

Uphill Battle
Uphill Battle

heavy metal, rock