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

French Capoeira - La Villette
French Capoeira - La Villette

Capoeira, Berimbau Beats, Brazilian Voice

Papillon et Cupcake
Papillon et Cupcake

heavy gothic metal dark

Just A Memory
Just A Memory

Gothic K-Pop Chillsynth

Лесная Мудрость
Лесная Мудрость

folk mystical acoustic

猫の歌
猫の歌

drum and bass, j-pop, chilwave, lo-fi, house, electro, ambient

Слёзы
Слёзы

blues slow soulful

Bir Gece Vakti
Bir Gece Vakti

melodik akustik pop

Henry's Lament
Henry's Lament

rock,pop rock,folk,contemporary folk,folk rock

sılagibi
sılagibi

female singer, turkish 90s, piano, pop, sad, guitar, female vocals, folk, orchestral, acoustic, epic, Turkish

Ponies on a rainbow
Ponies on a rainbow

Reggae-Metal, Nu-metal.

This is my time
This is my time

Trip Hop, eletronic indie, eletronic, hip Hop, orchestra, Guitar, instrumental intro, Bass guitar

Blue
Blue

trance dreamy ethereal

Underneath the Stars
Underneath the Stars

atmospheric drum and bass children choir saxophone

Hymn of the Conquerors
Hymn of the Conquerors

Wagnerian Martial Symphony Brass Fanfares Percussive Rhythm Rich Strings Leitmotifs

哼,本小姐才不会什么被删除呢 入围
哼,本小姐才不会什么被删除呢 入围

rnb, Double bass, Cute piano, miku voice, cat, jump

好友,彼此珍惜
好友,彼此珍惜

Male Vocals ,Americana Jungle,guitar

사계절
사계절

mellow, pop, trance, anime, house, deep, beat, bass, violin