quicksort.h

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

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

Atacames Va a Cambiar
Atacames Va a Cambiar

reguetón pop motivacional

False Prosperity
False Prosperity

hardcore punk, skate punk

Caminando por la Vida
Caminando por la Vida

infectious pop acoustic

Німфи
Німфи

melodic pop

Best Friends Forever
Best Friends Forever

soft pop acoustic melodic

711
711

female vocals, 90s, pop, beat, hip-hop, bass, drum, hot, sexy, confident, ethereal, smooth, afro, summer

I Love Sweet Treats
I Love Sweet Treats

electronic pop

Cảnh thiên nhiên trong rừng
Cảnh thiên nhiên trong rừng

nature; stream, birds chirping; 30s; loop

Greška za greškom
Greška za greškom

Male vocals, heartfelt, Harp, beautiful, waves, music, end

Fake People
Fake People

hip hop, rap, female vocals, trap

Masa indah di Almubin
Masa indah di Almubin

Metal,slow rock.pop, dark, dramatic. Female voice

Reina Violeta
Reina Violeta

infantil

Chris's Birthday Bash
Chris's Birthday Bash

rap metal heavy new metal

Annemin Dolması
Annemin Dolması

rock, metal, hard rock, electro, rap, trap

Waves & Whispers
Waves & Whispers

pirate shanty gaelic ethereal 808 trap rap dramatic drops

星の消えた夜
星の消えた夜

J-Pop,Rock,Alternative Rock,[Female Vocal],Emotional,Melancholic,Guitar,Piano,140 BPM,4/4,2010s

森の奥深く
森の奥深く

lofi ケルト ゆったり