quicksort.h

Epic cinematic scores, sweeping orchestral movements, heroic themes, and stirring emotional peaks, adventure,

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

推荐歌曲

Dues Deorum
Dues Deorum

String quartet, acoustic guitar, infectious Electro pop step, romantic, spring time feel,

Szalona Nostalgia
Szalona Nostalgia

male vocalist,contemporary folk,singer-songwriter,folk,melodic,acoustic,mellow,melancholic,poetic,bittersweet,introspective,longing,autumn,pastoral,lonely,soft,existential,soothing,atmospheric

환상의 파티
환상의 파티

edm 밝고 경쾌한 멜로디

Neler Olur Bilinmez
Neler Olur Bilinmez

folk punk, horror punk

Unchain the Storm
Unchain the Storm

rock,alternative rock,energetic,hard rock,punk rock

Rhythm of Our Love
Rhythm of Our Love

flamenco y bachata sensual

克苏鲁之影"Shadow of Cthulhu"
克苏鲁之影"Shadow of Cthulhu"

Sea surface, Calm flute, Sudden pause

Songs of yesterday
Songs of yesterday

Root reggae female vocal trumpet saxophone

Under Pressure
Under Pressure

drill raw gritty

Like a Phoenix
Like a Phoenix

Angry punk rock

Smooth Serenade
Smooth Serenade

sophisticated laid back cool jazz

Into the Light
Into the Light

djent technical metal pop hip hop

Brawl Stars
Brawl Stars

epic, bass, drum, piano

Luces que parpadean House Deep
Luces que parpadean House Deep

Bass house wobbles, dirty bass, rhythmic drops, energy spikes, club hits, dancefloor shake-ups

Thrones
Thrones

soul, , gospel rap, battle music Pokémon, piano epic, electronic, electro, rap, Angelic sacred choir 4 minutes.

Now That We're Over
Now That We're Over

melancholic acoustic reflective

时间的河流
时间的河流

Medium Adagio Lyrical.Piano.Synthesizer.4/4 beat. 60BPM

Il Mio Foglio È Come Uno Scoglio
Il Mio Foglio È Come Uno Scoglio

reggaeton energico ritmico