#include <stdio.h>
#include <stdlib.h>
#include <time.h>
void merge(int [], int, int [], int, int []);
void bubble_sort(int a[], int size);
void print_array(int arr[], int size);
int main(void)
{
int a[5], b[7], i, len_a, len_b, c[12];
srand(time(NULL));
len_a = sizeof(a) / sizeof(int);
for (i = 0; i < len_a; i++)
a[i] = rand() % 100 + 1;
bubble_sort(a, len_a);
printf("a:\n");
print_array(a, len_a);
len_b = sizeof(b) / sizeof(int);
for (i = 0; i < len_b; i++)
b[i] = rand() % 100 + 1;
bubble_sort(b, len_b);
printf("\nb:\n");
print_array(b, len_b);
merge(a, len_a, b, len_b, c);
printf("\nsorted merge array:\n");
print_array(c, len_a + len_b);
return 0;
}
void merge(int a[], int len_a, int b[], int len_b, int c[])
{
int i, j, k;
j = k = 0;
for (i = 0; i < len_a + len_b;)
{
if (j < len_a && k < len_b)
{
if (a[j] < b[k])
{
c[i] = a[j];
j++;
}
else
{
c[i] = b[k];
k++;
}
i++;
}
else if (j == len_a)
{
for (; i < len_a + len_b;)
{
c[i] = b[k];
k++;
i++;
}
}
else
{
for (; i < len_a + len_b;)
{
c[i] = a[j];
j++;
i++;
}
}
}
}
void bubble_sort(int a[], int size)
{
int i, j, swap, tmp;
for (i = 0; i < size; i++)
{
swap = 0;
for (j = 0; j < size - i - 1; j++)
{
if(a[j] > a[j + 1])
{
tmp = a[j];
a[j] = a[j + 1];
a[j + 1] = tmp;
swap = 1;
}
}
if (swap == 0) break;
}
}
void print_array(int arr[], int size)
{
int i;
for (i = 0; i < size; i++)
printf("%4d", arr[i]);
}
/*
run:
a:
27 28 51 58 78
b:
37 38 60 86 92 94 99
sorted merge array:
27 28 37 38 51 58 60 78 86 92 94 99
*/