quicksort.h

Female celtic vocals, Epic cinematic scores, sweeping orchestral movements, adventure music

July 27th, 2024suno

歌词

#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

推荐歌曲

Amistad Lejana
Amistad Lejana

Trance,Synt,Piano,Emotional,Sad,Melódico,atmosférica

Sweet Lullaby(new)
Sweet Lullaby(new)

Lullaby,a cappella, soothing, serene, full of love and affection.,largo,

Empty Spaces
Empty Spaces

microtonal, glitch, idm, ambient, experimental

Ultra Violet
Ultra Violet

90s, boom bap

Euphoric Stride
Euphoric Stride

instrumental,electronic,instrumental,uplifting trance,electronic dance music,trance,orchestral,melodic,theme,longing,rhythmic,fantasy,epic,energetic

Freefall
Freefall

Slow otherworldly waves crashing, cold, organ glitchsynth Atmospheric minimal, post-glitch, sleepglitch

Fallen Angel
Fallen Angel

electropop alt hip hop indie

Love's Melancholy Serenade
Love's Melancholy Serenade

Sultry female singer, singing about how she's lost the only man she's every loved - jazz style

助異
助異

JPOP

Shadows of Luna II
Shadows of Luna II

Progressive Power Metal, anime influenced, virtuoso shred guitar, keyboard melody, dolby atmos mastering, epic, Gundam

Hirohima Nagasaki 2
Hirohima Nagasaki 2

rock 90's male epic

Beast of Valhalla
Beast of Valhalla

metalcore chorus edm-infused pop verses

Сварог
Сварог

beat, groovy, rock, soul, upbeat, intense, powerful. bass, guitar, drums, pop, fast, uplifting,

Lost in the City
Lost in the City

psychedelic guitar shoegaze

Caminos Diferentes
Caminos Diferentes

rock alternative, Electric Guitar, psychodelic,Male vocals, 100 RPM, synthpop, synthwave, emo

Pee so urgent, makes me sprint
Pee so urgent, makes me sprint

female vocalist,electronic,electronic dance music,uplifting,lush,warm,ethereal,soothing,female vocals

Ashes in the Wind
Ashes in the Wind

gothic symphonic metal