fixed merge
This commit is contained in:
+10
-2
@@ -200,8 +200,16 @@ void keke_array_qsort_header(KekeArray *array, size_t start_header_size) {
|
|||||||
|
|
||||||
// requires pre-sorted arrays
|
// requires pre-sorted arrays
|
||||||
KekeArray *keke_array_merge(KekeArray *a, KekeArray *b) {
|
KekeArray *keke_array_merge(KekeArray *a, KekeArray *b) {
|
||||||
if(a->len == 0) return keke_array_clone(b);
|
if(a->len == 0) {
|
||||||
if(b->len == 0) return keke_array_clone(a);
|
KekeArray *r = keke_array_clone(b);
|
||||||
|
keke_array_set_len(b, 0);
|
||||||
|
return r;
|
||||||
|
}
|
||||||
|
if(b->len == 0) {
|
||||||
|
KekeArray *r = keke_array_clone(a);
|
||||||
|
keke_array_set_len(a, 0);
|
||||||
|
return r;
|
||||||
|
}
|
||||||
keke_array_reverse(a);
|
keke_array_reverse(a);
|
||||||
keke_array_reverse(b);
|
keke_array_reverse(b);
|
||||||
if(a->type_size != b->type_size) return NULL;
|
if(a->type_size != b->type_size) return NULL;
|
||||||
|
|||||||
+4
-4
@@ -143,14 +143,14 @@ int main(void) {
|
|||||||
|
|
||||||
keke_array_foreach(array, set);
|
keke_array_foreach(array, set);
|
||||||
keke_array_qsort_header(array, sizeof(int));
|
keke_array_qsort_header(array, sizeof(int));
|
||||||
/*keke_array_foreach(array, output);
|
|
||||||
puts("\n");
|
|
||||||
keke_array_foreach(array2, output);
|
|
||||||
puts("\n");*/
|
|
||||||
KekeArray *array5 = keke_array_merge(array, array2);
|
KekeArray *array5 = keke_array_merge(array, array2);
|
||||||
printf("Expected value:\n0, 1, 1, 2, 2, 2, 2, 3, 3, 3, 4, 5, 6, 7, 8, 9,\n");
|
printf("Expected value:\n0, 1, 1, 2, 2, 2, 2, 3, 3, 3, 4, 5, 6, 7, 8, 9,\n");
|
||||||
keke_array_foreach(array5, output);
|
keke_array_foreach(array5, output);
|
||||||
puts("\n");
|
puts("\n");
|
||||||
|
keke_array_foreach(array, output);
|
||||||
|
puts("\n");
|
||||||
|
keke_array_foreach(array2, output);
|
||||||
|
puts("\n");
|
||||||
|
|
||||||
keke_array_free(array);
|
keke_array_free(array);
|
||||||
keke_array_free(array2);
|
keke_array_free(array2);
|
||||||
|
|||||||
Reference in New Issue
Block a user