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

Ring in the Desert
Ring in the Desert

Stoner rock , rock

Мы к вам приехали на час, но глэм рок
Мы к вам приехали на час, но глэм рок

1980's Glam Rock, Glam Metal, heavy metal, epic, male vocals, hair Rock

My love
My love

darkwave, futurepop, electronic body music, synthpop, pos-punk

Love in the Fast Lane
Love in the Fast Lane

electronic dance

Colorful Whispers
Colorful Whispers

surreal psychedelic hypnotic

阳光明媚的一天
阳光明媚的一天

Jazz-hippop, Blues, upbeat

Antalya
Antalya

energetic, powerful rap

Crecer y Avanzar
Crecer y Avanzar

indie pop-rock

SommerParty
SommerParty

electronic 16-bit, dubstep

A Little Happy Dance
A Little Happy Dance

upbeat fast tempo alternative pop

Anthem of the Fractured
Anthem of the Fractured

male vocalist,rock,metal,thrash metal,heavy,aggressive,angry,energetic,anti-religious,dark,rhythmic,death,groove metal,heavy metal,war

Swamp Surfer
Swamp Surfer

Rastafarian Grime, Cajun Swamp Wave, Bharat Surf Black Metal, Tech Prog, Mariachi Phonk, Hindu Jungle Swing, Doom Wave

Blues di Giovanna
Blues di Giovanna

blues,electric blues,soul blues,chicago blues

Head Spin
Head Spin

pulsating electronic rhythmic

Techno Goofball
Techno Goofball

rap techno

Oleg's Gone to the Bathroom
Oleg's Gone to the Bathroom

nu-metal, rap-rock, alternative rock, use Chester Bennington voice, bpm 140, E# minor, use growl and screams, 2 voices

We Are One
We Are One

hard techno

Heartfelt Moments
Heartfelt Moments

gentle melodic pop