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
|
||||
KekeArray *keke_array_merge(KekeArray *a, KekeArray *b) {
|
||||
if(a->len == 0) return keke_array_clone(b);
|
||||
if(b->len == 0) return keke_array_clone(a);
|
||||
if(a->len == 0) {
|
||||
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(b);
|
||||
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_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);
|
||||
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);
|
||||
puts("\n");
|
||||
keke_array_foreach(array, output);
|
||||
puts("\n");
|
||||
keke_array_foreach(array2, output);
|
||||
puts("\n");
|
||||
|
||||
keke_array_free(array);
|
||||
keke_array_free(array2);
|
||||
|
||||
Reference in New Issue
Block a user