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

Empfohlen

Paige's Homecoming
Paige's Homecoming

female vocalist,pop,pop rock,rock,teen pop,dance-pop,power pop,electropop,love,energetic

Digital Dreams
Digital Dreams

trance, rave, hardstyle, euphoric, dance, Berlin, psy, progressive

Wir Tanzen in der Sonne
Wir Tanzen in der Sonne

epic, bass, metal, heavy metal, guitar, rock, folk, drum, hard rock, acoustic, classical

For you For Me
For you For Me

Sentimental italian melody with guitar and saxophone

Back On Solid Ground
Back On Solid Ground

Alternative Rock, Indie Folk-rock, orchestra, cello,

keep going
keep going

Catchy Instrumental intro. electro swing. sweet female vocal, well produced, smooth, futuristic, pop

Bleep
Bleep

Electronic Dubstep Brostep

Echoes in the Shadows
Echoes in the Shadows

adult pop lofi goth surreal

Kyoto Breeze
Kyoto Breeze

instrumental,house,electronic,electronic dance music,deep house,rhythmic,nocturnal,urban,repetitive,warm,party,sampling,hypnotic,atmospheric,uplifting,lush,summer,eclectic,progressive,tropical house,japanese traditions

Epic
Epic

An epic level, movie effect, movie ending, finale, suspense

Strings of Life
Strings of Life

Metal doom, simple drum inducing lot of break, simple guitar solo, screamed voices with deep tone

Геркулес 2
Геркулес 2

epic, psychedelic, piano, groovy

Dans Met Die Liggies
Dans Met Die Liggies

synth-driven with pulsing beats and bright melodies, pop, layered with electronic textures and a steady four-on-the-floor rhythm for a club anthem vibe, eurodance, afrikaans

70's Beat ver16
70's Beat ver16

funky 70s hip-hop bass-driven, mellow

Gentle Woman
Gentle Woman

Alternative Rock, Blue-Eyed Soul, Pop Rock, Female Voice, melodic, Uplifting, string elements, vocal harmony accents,