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

GEÇTİ GİDİYOR
GEÇTİ GİDİYOR

uplifting, drum, rock, bass, pop, beat, powerful, hard rock

Floating on the Water
Floating on the Water

Electronic, piano, guitar, melodic vocals

Rise to the Beat
Rise to the Beat

Fast europop. Heavy, fast beat intro. Studio quality male vocal, pulsating fast bass. Epic drop, catchy chorus

220-21
220-21

hiphop,drum.kick,wrap

Fading Echoes
Fading Echoes

bright happy hip house

Cyrus the Cat
Cyrus the Cat

upbeat, rock, hard rock, electro, female singer, clear vocal, 90s, metal

报菜名
报菜名

beijing native hair metal

Brick's Awakening
Brick's Awakening

male vocalist,rock,alternative rock,indie rock,blues rock,garage rock,psychedelic rock,garage rock revival,raw,introspective,bittersweet,longing

Lost in my world
Lost in my world

cinematic, percussion, orchestral, emotional, atmospheric, acoustic, dark, female singer

Unstoppable Beat
Unstoppable Beat

dance pop upbeat

In the Silent We
In the Silent We

reflective pop contemplative

짝꿍
짝꿍

heartfelt motivational lovely and cute sweet k-pop style

Sit and Spin
Sit and Spin

urban hip hop, heavy bass, futuristic production, aggressive rap, explosive beat, revolutionary, minor key

Palm Tree Blues
Palm Tree Blues

rock,blues rock,rock & roll,pop rock,rock and roll,funk,blues

Seblak Jeleger
Seblak Jeleger

dangdut dj remix

Vvvv(EDM)
Vvvv(EDM)

EDM, BLUES, Blues guitar virtuoso, Edm rhythm and background, 120BPM, E minor, studio quality, masterpiece