合并有序数组.c 784 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. #include <stdio.h>
  2. int main() {
  3. int n1, n2,m;
  4. scanf("%d", &n1);
  5. int arr1[n1];
  6. int i;
  7. for (i = 0; i < n1; i++) {
  8. scanf("%d", &arr1[i]);
  9. }
  10. scanf("%d", &n2);
  11. int arr2[n2];
  12. for (i = 0; i < n2; i++) {
  13. scanf("%d", &arr2[i]);
  14. }
  15. int merged[n1 + n2];
  16. int j = 0;
  17. int k = 0;
  18. while (i < n1 && j < n2) {
  19. if (arr1[i] < arr2[j]) {
  20. merged[k++] = arr1[i++];
  21. } else {
  22. merged[k++] = arr2[j++];
  23. }
  24. }
  25. while (i < n1) {
  26. merged[k++] = arr1[i++];
  27. }
  28. while (j < n2) {
  29. merged[k++] = arr2[j++];
  30. }
  31. for (m = 0; m < n1 + n2; m++) {
  32. printf("%d", merged[m]);
  33. if (m < n1 + n2 - 1) {
  34. printf(" ");
  35. }
  36. }
  37. return 0;
  38. }