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

Unfurling Tomorrow
Unfurling Tomorrow

dramatic grand orchestral

Bossa nova be like
Bossa nova be like

electric guitar experimental brazilian bossa nova jazz a cappella, portuguesse

Leap of Faith
Leap of Faith

J-pop, guitar riffs, Percussion, upbeat drums, bouncy synth, female vocals, kawaii pop, background vocals

Sweet Symphony of Love
Sweet Symphony of Love

bright cheerful sweet pop lovely hip hop cute attack sound drum'n'bass

Chronicles of Eternity
Chronicles of Eternity

1750s Dubstep Chanting Heavy Male Vocals Hardstyle Metal Fire Rap Kpop Crazy

No Broken Parts - Rise Against Style
No Broken Parts - Rise Against Style

Grunge rock rise against

Pasión Viviente
Pasión Viviente

rock,pop rock,progressive rock,metal,symphonic rock,rock andaluz

Banana Beat
Banana Beat

electronic hip hop

Zoey's Meme Night
Zoey's Meme Night

[Dark Electropop], [Power Metal], army song, Female Vocals,

La Dama del Velo Negro 3
La Dama del Velo Negro 3

Dream Pop, Indie pop, female singer,

Train of Desire
Train of Desire

English Male Rap, french female RnB

What the D'jango
What the D'jango

gypsy jazz swing, messy electric guitar, post-punk vibes, dark.

The Innocent World.
The Innocent World.

electro swing, twisted enchanting, dark, energetic, groovy, sad, sweet female child vocal

Inspire Lie
Inspire Lie

Pop-rock, Alternative rock, Bass, Inspire, single voice

Mom and Me
Mom and Me

pop sweet acoustic

Tegar
Tegar

Reggae