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

推荐歌曲

Moonlit Rhythms
Moonlit Rhythms

hip-hop jazzy lo-fi

School of Evangelism Intro
School of Evangelism Intro

solemn spoken word inspirational

||||||||||||PIXELVIBE\\\\\\\\\\\\\\
||||||||||||PIXELVIBE\\\\\\\\\\\\\\

Retro, electro guitar, dubstep, trap, pixel-funk, epic

Jalan Salib
Jalan Salib

romantic delta blues

Mask of Infinity
Mask of Infinity

intense instrumental modern rock

刻骨銘心
刻骨銘心

male vocals, female vocals, r&b, Chinese

זה גוזמה
זה גוזמה

Rap, pop,hip hop

Raindrops and Flowers
Raindrops and Flowers

soothing acoustic folk

宇宙启示
宇宙启示

sparse, anthemic, rock and roll, drums, irish punk, rock, metal, hard rock, electro, rap, piseiro, rawstyle, pop

The Haunted Woods
The Haunted Woods

eerie whimsical horror

Fight for this love
Fight for this love

pop, diva , LoFi, easy listening, happy song

Конец Человечества
Конец Человечества

pop punk acoustic energetic female vocal

비가 와
비가 와

female vocals, male vocals, pop, beat, bass, guitar, rap, drum, drum and bass, upbeat, psychedelic, sad, experimental

不是你不愛你
不是你不愛你

Lyrical, ballad, slow, gentle, piano, guitar, violin

Friendly?
Friendly?

reggae, pop

Sky High
Sky High

progressive-rock cinematic swanky jazz hungarian electro-swing jazz-fusion funky studio-drums percussive