合并有序数组.c 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. #include <stdio.h>
  2. // Function to merge two sorted arrays into one sorted array
  3. void mergeSortedArrays(int arr1[], int size1, int arr2[], int size2) {
  4. int merged[size1 + size2]; // Result array to store merged sorted elements
  5. int i = 0, j = 0, k = 0; // i for arr1, j for arr2, k for merged array
  6. // Merge the arrays while both arrays have elements
  7. while (i < size1 && j < size2) {
  8. if (arr1[i] <= arr2[j]) {
  9. merged[k++] = arr1[i++];
  10. } else {
  11. merged[k++] = arr2[j++];
  12. }
  13. }
  14. // If there are remaining elements in arr1, add them to merged array
  15. while (i < size1) {
  16. merged[k++] = arr1[i++];
  17. }
  18. // If there are remaining elements in arr2, add them to merged array
  19. while (j < size2) {
  20. merged[k++] = arr2[j++];
  21. }
  22. // Print the merged sorted array
  23. int m;
  24. for (m = 0; m < size1 + size2; m++) {
  25. if (m > 0) {
  26. printf(" ");
  27. }
  28. printf("%d", merged[m]);
  29. }
  30. printf("\n");
  31. }
  32. int main() {
  33. int size1, size2;
  34. // Input the first sorted array
  35. scanf("%d", &size1);
  36. int arr1[size1], i;
  37. for (i = 0; i < size1; i++) {
  38. scanf("%d", &arr1[i]);
  39. }
  40. // Input the second sorted array
  41. scanf("%d", &size2);
  42. int arr2[size2];
  43. for (i = 0; i < size2; i++) {
  44. scanf("%d", &arr2[i]);
  45. }
  46. // Merge and print the sorted arrays
  47. mergeSortedArrays(arr1, size1, arr2, size2);
  48. return 0;
  49. }