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

Ku Tak Perduli
Ku Tak Perduli

Britpop pop grunge, Vocal Male

Sousa?
Sousa?

Trombone, EDM, hip hop

Os olhos teus
Os olhos teus

MPB SAMBA SOUL

Octavia Blake: Historia de una guerrera
Octavia Blake: Historia de una guerrera

Emotional Dark Fantasy Bard, Harp, Strings, Orchestral, Female Singer, Deep Voice

In Deiner Nähe
In Deiner Nähe

electronic pop

Good, Bye
Good, Bye

violin, emotional, sad, female voice, emo, dramatic, intense, piano

Break the Glass
Break the Glass

Electric Violin, Dubstep, Classical Crossover, EDM, Powerful adult female voice

cumpleaños de paolo
cumpleaños de paolo

flamenco urbano

Dante's Divine Comedy - Inferno Canto 1
Dante's Divine Comedy - Inferno Canto 1

Psy goa trance, heavy deep male vocals

SCP-5000
SCP-5000

Progressive metal, emotional male vocals, death metal,

Guitar Blaze
Guitar Blaze

electric groovy delta blues

Witaj w Polskim Kraju
Witaj w Polskim Kraju

Polski hip hop

Missing Whiskers
Missing Whiskers

Pop, Rock, Storytelling, male vocals

Nocturnal Riff
Nocturnal Riff

instrumental,jazz,trumpet,rock,guitar,jazz fusion,jazz-funk,jazz-rock,energetic,instrumental

Boku ga ita shirushi
Boku ga ita shirushi

lo-fi beat chill drums refreshing j-pop cute electric guitar emotional indie rock vocaloid nostalgic piano

Steffen, ich liebe dich
Steffen, ich liebe dich

heartfelt pop acoustic

Romperte Por Amor
Romperte Por Amor

flamenco acoustic bachata