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

推荐歌曲

《时光彼岸》
《时光彼岸》

Classical,Solemn, dignified,Touching, moving

Shattered Dreams
Shattered Dreams

intense blues slow tempo progressing into rock soulful

因为爱 爱 爱
因为爱 爱 爱

Alt-pop Afropiano

A Moment In Greece
A Moment In Greece

Greek intro Turkish makam modes, urban greek music

Britannia Rising
Britannia Rising

instrumental,instrumental,rock,brit pop,instrumental,pop rock,alternative rock,energetic,anthemic

Nomads are coming
Nomads are coming

changing key, deep bass progressive rock, poly meter, english, dark

Coffee Groove
Coffee Groove

infectious high-energy dance pop

Layin' Down A Beat
Layin' Down A Beat

rap, hip hop, big bass beats, smooth vibes,

File 2 Digital Dreams
File 2 Digital Dreams

hallucinated K-pop female Vocals, k-pop, glitch, reverb, bass, deep sub-harmonic frequency, waterdrop fx, fusion,

Moonlit Melodies
Moonlit Melodies

melodic manouche jazz acoustic

1x1 SQUARE METER ROOM
1x1 SQUARE METER ROOM

dark, atmospheric, dramatic, husky male vocal, ethereal, melodic punk, powerful metal

Новая Микроволновка
Новая Микроволновка

электронный поп ритмичный

b-boy style
b-boy style

90s hip-hop, , turntablism, vinyl samples, instrumental loop, electro, synth, b-boy

hati
hati

guitar solo, dangdut, emotional

Rhythm of the Jungle
Rhythm of the Jungle

drum 'n bass jungle

God Saved Me
God Saved Me

christian pop-punk emotional slow

Ethereal Drift
Ethereal Drift

instrumental,instrumental,instrumental,instrumental,chillwave,chill-out,downtempo,indietronica,chillout,electronic,atmospheric,instrumental,warm,soothing,calm