gitman3

p4a | merge_sort

Mar 12th, 2023
86
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.92 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. void merge(int A[], int l, int mid, int h) {
  5. int i=l,j=mid+1,k=0;
  6. int tmp[h-l+1];
  7.  
  8. while (i <= mid && j <= h) {
  9. if(A[i]<=A[j]) tmp[k++]=A[i++];
  10. else tmp[k++]=A[j++];
  11. }
  12. while(i<=mid) tmp[k++]=A[i++];
  13. while(j<=h) tmp[k++]=A[j++];
  14. for(int x=l;x<=h;x++) A[x]=tmp[x-l];
  15. }
  16.  
  17. void merge_sort(int A[], int l, int h) {
  18. if(l<h){
  19. int mid=(l+h)/2;
  20. merge_sort(A,l,mid);
  21. merge_sort(A,mid+1,h);
  22. merge(A,l,mid,h);
  23. }
  24. }
  25.  
  26. int main() {
  27. int n;
  28. printf("Enter number of elements: ");
  29. scanf("%d", &n);
  30. int A[n];
  31. printf("Enter the elements: ");
  32. for (int i = 0; i < n; i++) {
  33. scanf("%d", &A[i]);
  34. }
  35. merge_sort(A, 0, n-1);
  36. printf("Sorted array: ");
  37. for (int i = 0; i < n; i++) {
  38. printf("%d ", A[i]);
  39. }
  40. printf("\n");
  41. return 0;
  42. }
  43.  
  44.  
Add Comment
Please, Sign In to add comment