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

Headin' Out by Nightfall
Headin' Out by Nightfall

slow latin blues gritty

59. Frozen Serenity
59. Frozen Serenity

ambient atmospheric electronic

Our Father
Our Father

1940's old swing and jazz

Cosmic Genesis
Cosmic Genesis

instrumental,electronic,atmospheric,ambient,space ambient,drone,progressive electronic,new age,instrumental,meditative,calm,lush,longing,warm,space,peaceful,melancholic,soothing

Sunshine in My Eyes
Sunshine in My Eyes

melodic rock pop smooth anthemic dance driving

Light the Blunt
Light the Blunt

Brutal Reggae, Xenharmonic Death Metal, Eerie Mayan Temple Flute, Math Phonk, Glitch Black Metal, Voodoo Witch Trap Goth

Ibu
Ibu

Punk, emotional

Whispers of Yesterday
Whispers of Yesterday

city pop, funk, disco, 1980s, japanese, upbeat, chill, female voice, funky guitar, piano, violin, trumpet, bass, drums

Midnight Adventures
Midnight Adventures

bouncy dancepop

Tenpo Pona
Tenpo Pona

j-pop, kawaii visual kei, denpa-kei, anime opening, absurdly cute female vocal, energetic, cute, rhythmic

Rio Frio
Rio Frio

chillwave samba Chillwave, Samba rhythms, lo-fi, synth, soft vocals

Shattered Bones
Shattered Bones

brooding dark alternative rock

Purrfect Harmony
Purrfect Harmony

Cats meowing

Worlds Apart
Worlds Apart

female vocalist,pop,rock,indie rock,indie pop,alternative rock,melodic,love,bittersweet,energetic,romantic,passionate,melancholic,sad,breakup,introspective,anxious,longing,lonely,nocturnal

Slow Jam Paradise④
Slow Jam Paradise④

Lo-fi,R&B, Mellow, female vocals, Ending