fork download
  1. #include <iostream>
  2. using namespace std;
  3. int arr[500];
  4. void merge(int l[],int l_len,int r[],int r_len)
  5. {
  6. int i=0,j=0,k=0;
  7. while(i<l_len && j<r_len)
  8. {
  9. if(l[i] <= r[j])
  10. {
  11. arr[k++]=l[i++];
  12. }
  13. else arr[k++]=r[j++];
  14. }
  15. while(i<l_len) arr[k++]=l[i++];
  16. while(j<r_len) arr[k++]=r[j++];
  17. }
  18. void merge_sort(int arr[],int len)
  19. {
  20. int mid = 0;
  21. if(len<2) return;
  22. else mid = len/2;
  23. int l[mid+1] = {0};
  24. int r[len-mid+1] = {0};
  25. for(int i=0;i<mid;i++) l[i]=arr[i];
  26. for(int i=mid;i<len;i++) l[i-mid]=arr[i];
  27. merge_sort(l,mid);
  28. merge_sort(r,mid);
  29. merge(l,mid,r,len-mid);
  30. }
  31. int main()
  32. {
  33. srand(time(NULL));
  34. int n = 50;
  35. cout<<n<<"\n";
  36. for(int i=0;i<n;i++)
  37. {
  38. arr[i] = rand()%n + 1;
  39. cout<<arr[i]<<" ";
  40. }
  41. merge_sort(arr,n);
  42. return 0;
  43. }
Success #stdin #stdout 0s 3468KB
stdin
Standard input is empty
stdout
50
2 45 37 23 41 7 49 8 48 37 19 50 47 15 37 41 25 35 20 43 45 18 24 22 46 5 42 12 35 2 11 36 46 47 8 37 3 8 44 2 46 14 4 42 29 40 34 5 24 4