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

Memories
Memories

Electric and acoustic guitars, electric bass, drums and persecution, keyboards and synthesizers, piano, string arrangeme

technical hardcore01
technical hardcore01

Harsh Noise ,math rock, hardcore, aggressive,

Abyss Of Sorrow
Abyss Of Sorrow

layered female vocals, bass, beat, dark

navio PEIC-rata
navio PEIC-rata

folk,progmetal, guitar,male voice

Lundi Soir Liberté
Lundi Soir Liberté

rock,pop rock,alternative rock,power pop,energetic

Bloom Baby
Bloom Baby

pop melodic acoustic

3
3

Guitar, Acoustic/Electric, Synthesizer, Drum Machine, Bass, Piano, Electronic Effects, Pop Vocals, R&B Style, new wave

Сердце мое
Сердце мое

рок-н-ролл ретро мелодичный

Rise Above the Crowd
Rise Above the Crowd

Afro-funk, 4 minutes, male voice.

gözler...
gözler...

Turkish indie,acoustic, Alternative music,industrial elements,sad theme,stereo,48000 bit,320kbps

Whispered Secrets
Whispered Secrets

classical mysterious piano quiet

Bayangmu dalam Sepi
Bayangmu dalam Sepi

female vocalists,female vocalist,non-binary vocalist,pop,love,r&b,melodic,electropop,contemporary r&b,sentimental,breakup

Northern Adventure
Northern Adventure

song about Ido's adventurous move from the warm climes of Israel to the chilly landscapes of Canada,highlighting the dramatic shift in scenery and lifestyle. Pop

Elevate the Groove
Elevate the Groove

high-energy edm

Gardener
Gardener

ambient pads, Native American tribal, lo-fi beats, soulful, trap drums, chillwave, electro-acoustic, mystical, organic

Monoton Waktu
Monoton Waktu

reflective poetic pop

Monster Love
Monster Love

rock energetic electric

Whispering Wind
Whispering Wind

irish folk melodic