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

Obbedienza alla paura
Obbedienza alla paura

piano, melodic, intense, melancholic, alternative rock, cinematic, orchestral

Silhouettes
Silhouettes

alternative haunting ethereal

Air Mata Tanah Syuhada
Air Mata Tanah Syuhada

Metal core, thrash metal, metal, grind core

Moonlit Rain
Moonlit Rain

lofi ambient dreamy

Stay with Me Tonight
Stay with Me Tonight

Dark,Cinematic,electronic,melodic,dreamy,atmospheric,RnB,male and female duet

Lost and Found
Lost and Found

dark eerie electronic

Under the Midnight Sky
Under the Midnight Sky

funk and k-pop blend indie rock k-pop heavy drum kicks pop, atmospheric, catchy guitar riffs, electro piano anime intro

Lost in Existnce - Lyric Version, Remade - Jasonmine
Lost in Existnce - Lyric Version, Remade - Jasonmine

new wave trance, disco chillsynth, eurobeat, fast

Somber Echo
Somber Echo

lo-fi rocksteady soulful vocal melancholic melodic with horns

Run Northern Kentucky
Run Northern Kentucky

relaxing vibe soft rap minimalistic beats

Лайк в Ответ 3
Лайк в Ответ 3

russian pop, fast electro, dubstep, dance music, female voice, 2000 year

Cloud Trap Dreams
Cloud Trap Dreams

chill trap ethereal nostalgic

Cyber Track
Cyber Track

deep hypnotic, bass, guitar, synth

Rapid Transit
Rapid Transit

clear vocals, indie dream pop, downtempo, syncopated, raw, reverb, aching, flange, british female vocalist, layered

Land of Dragons
Land of Dragons

Synth-pop, electronic, new wave, 1980s, italo disco, synth space

कागको करङ
कागको करङ

simple folk acoustic

[ ! ]
[ ! ]

MIDI, [髥莏], UTAU, chiptune, [monotone], raw vocals, synth electronica, [Utane Uta], PC-98, panning, robotic, 8-bit

Ostrich V2
Ostrich V2

Ostrich