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

推荐歌曲

İSTANBUL
İSTANBUL

Turkısh folk power fantezi Arabesk klarnet keman piano darbuka, female vokals,power deep house fantastik arabesk folk

Psalm 24
Psalm 24

choral reggae, drum and bass

El Nacimiento de Jesús
El Nacimiento de Jesús

musica gregoriana solemne acústica

Neon Nights
Neon Nights

electro-acid house, female voice

Les Aventures du Chevalier
Les Aventures du Chevalier

acoustic medieval chill

World Vibration Battle
World Vibration Battle

electro house emo dark witch house bass phonk atmospheric

Triumphant Sorrow
Triumphant Sorrow

electronic symphonic jazz melancholic

Enter the Battle
Enter the Battle

Rock, Pop, Anime, Violin

Echoes in the Shadows
Echoes in the Shadows

adult pop lofi goth surreal

Puppet Boy
Puppet Boy

heavy metal, gritty vocals, prog-rock, emotional, moody, slower tempo

涙を見せてもいいよね⍣
涙を見せてもいいよね⍣

Piano rock, strings,DREAMY

Metabolize (метаболизировать)
Metabolize (метаболизировать)

Epic hook chorus, drum and bass, minor key, anthem, violin, heavy, infectious, catchy, 't.A.T.u-style', pop, breakbeat

Candyland
Candyland

Ambient, nu-disco, emotional chords, edm, female vocals

Summer Breeze
Summer Breeze

chill study beats lo-fi hip hop

Sneaker Dreams
Sneaker Dreams

ambient minimalistic electronic

Electric Escape
Electric Escape

electronic futuristic

Unstoppable Force
Unstoppable Force

hard rock, hard hitting, epic

Brooklyn to Bamako
Brooklyn to Bamako

african folk piano lo-fi trap