Guest User

Untitled

a guest
Apr 24th, 2018
89
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.30 KB | None | 0 0
  1. int findMedianOfTwoSortedArrays(int numsA[],int a_size, int numsB[], int b_size){
  2. if (a_size > b_size){
  3. return findMedianOfTwoSortedArrays(numsB,b_size,numsA,a_size);
  4. }
  5. int low = 0;
  6. // We do binary search on the smallest array
  7. int high = a_size;
  8. while (low <= high){
  9. // Cut two arrays into "one array"
  10. int midA = (low + high) /2;
  11. int midB = (a_size + b_size + 1) / 2 - midA;
  12. int leftA, leftB;
  13. int rightA, rightB;
  14. if (midA == 0)
  15. leftA = INT_MIN;
  16. else
  17. leftA = numsA[midA-1];
  18.  
  19. if (midA == a_size)
  20. rightA = INT_MAX;
  21. else
  22. rightA = numsA[midA];
  23.  
  24. if (midB == 0)
  25. leftB = INT_MIN;
  26. else
  27. leftB = numsB[midB - 1];
  28. if (midB == b_size)
  29. rightB = INT_MAX;
  30. else
  31. rightB = numsB[midB];
  32.  
  33. if ( leftA <= rightB && leftB <= rightA){
  34. return max(leftA, leftB);
  35. } else if( leftA > rightB)
  36. high = midA - 1;
  37. else
  38. low = midA + 1;
  39. }
  40. }
  41. int main()
  42. {
  43. //int ar1[] = {2,3,5,8};
  44. //int ar2[] = {10,12,14,16,18};
  45. int ar1[] = {-5,3,6,12,15};
  46. int ar2[] = {-12,-10,-6,-3,4,10};
  47. int n1 = sizeof(ar1)/sizeof(ar1[0]);
  48. int n2 = sizeof(ar2)/sizeof(ar2[0]);
  49.  
  50. cout << findMedianOfTwoSortedArrays(ar1,n1,ar2,n2) << endl;
  51.  
  52. int *A,*B,size_A,size_B;
  53. runProgram(A,size_A,B,size_B);
  54. printArray(A,size_A);
  55. printArray(B,size_B);
  56.  
  57.  
  58. cout << findMedianOfTwoSortedArrays(A,size_A,B,size_B);
  59. return 0;
  60. }
Add Comment
Please, Sign In to add comment