mirror of
https://github.com/pocketpy/pocketpy
synced 2025-12-07 10:40:16 +00:00
fix for cl
This commit is contained in:
parent
ebdfb794ba
commit
3728c02b87
@ -2,14 +2,14 @@
|
||||
#include <string.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
static void merge(void* a_begin,
|
||||
void* a_end,
|
||||
void* b_begin,
|
||||
void* b_end,
|
||||
void* res,
|
||||
static void merge(char* a_begin,
|
||||
char* a_end,
|
||||
char* b_begin,
|
||||
char* b_end,
|
||||
char* res,
|
||||
int elem_size,
|
||||
int (*cmp)(const void* a, const void* b)) {
|
||||
void *a = a_begin, *b = b_begin, *r = res;
|
||||
char *a = a_begin, *b = b_begin, *r = res;
|
||||
while(a < a_end && b < b_end) {
|
||||
if(cmp(a, b) <= 0) {
|
||||
memcpy(r, a, elem_size);
|
||||
@ -28,15 +28,15 @@ static void merge(void* a_begin,
|
||||
memcpy(r, b, elem_size);
|
||||
}
|
||||
|
||||
void c11__stable_sort(void* ptr,
|
||||
void c11__stable_sort(void* ptr_,
|
||||
int count,
|
||||
int elem_size,
|
||||
int (*cmp)(const void* a, const void* b)) {
|
||||
// merge sort
|
||||
void* tmp = malloc(count * elem_size);
|
||||
char* ptr = ptr_, *tmp = malloc(count * elem_size);
|
||||
for(int seg = 1; seg < count; seg *= 2) {
|
||||
for(void* a = ptr; a < ptr + (count - seg) * elem_size; a += 2 * seg * elem_size) {
|
||||
void* b = a + seg * elem_size, *a_end = b, *b_end = b + seg * elem_size;
|
||||
for(char* a = ptr; a < ptr + (count - seg) * elem_size; a += 2 * seg * elem_size) {
|
||||
char* b = a + seg * elem_size, *a_end = b, *b_end = b + seg * elem_size;
|
||||
if (b_end > ptr + count * elem_size)
|
||||
b_end = ptr + count * elem_size;
|
||||
merge(a, a_end, b, b_end, tmp, elem_size, cmp);
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user