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

推荐歌曲

D0 pal
D0 pal

romantic rhythmic acoustic, melodic, female vocals, female singer, rap,

Ethereal Reverie
Ethereal Reverie

female singer, electronic, rock, deep, gospel, soul, lo-fi, bass, chill, classical

Trials Ahoy
Trials Ahoy

acoustic spirited sea shanty

Amor Desgastado
Amor Desgastado

corridos tumbados emocional acústica

We lezen boeken en we dragen broeken
We lezen boeken en we dragen broeken

Dutch, Street Organ, Electronic, Dance, Drum 'n' Bass, Drops, 175 bpm

As Time Passes By-rock-soul
As Time Passes By-rock-soul

guitar, beat, dark, drum, bass, soul, energetic, upbeat, pop, deep, hard rock

Joyful Day
Joyful Day

pop, electro, bass, electronic,electric guitar, nu metal, rock, rapcore, beat, swing, Alternative metal, rock voice

日语大如说
日语大如说

electronic,Hatsune Miku Vocaloid,synth, beat,Hatsune Miku, bass, drum,Miku voice,Vocaloid,electropop,synth,dark,funk

Summer Night
Summer Night

classical piano minimalistic

Dancing with Shadows
Dancing with Shadows

alternative rock, grunge, lo-fi, progressive, experimental, slow, heavy, sad, dark, major key

Dancing in the Rain
Dancing in the Rain

90s, catchy, pop, metal, rock, hard rock, melancholic, heavy metal, electro

Memories
Memories

psychedelic rock, indie rock, choral bedroom pop, lo-fi, funk, chill, bass, smooth, synth, guitar reverb, syncopated

You're a Star
You're a Star

trap, dubstep, rap, down tempo

The Whisper in the Void
The Whisper in the Void

ethereal, post-power metal, atmospheric, progressive

Белый лимузин
Белый лимузин

electronic pop rhythmic

Tu es!
Tu es!

Folk Rock, powerful, 60 BPM, various voices

Hunter is Three
Hunter is Three

pop, happy, catchy

Anthem NUHA4
Anthem NUHA4

anthem slow rhythm, beat, slow rhythm piano, drum, acoustics, drum and bass, 13 years old boy singer