Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- int findMedianOfTwoSortedArrays(int numsA[],int a_size, int numsB[], int b_size){
- if (a_size > b_size){
- return findMedianOfTwoSortedArrays(numsB,b_size,numsA,a_size);
- }
- int low = 0;
- // We do binary search on the smallest array
- int high = a_size;
- while (low <= high){
- // Cut two arrays into "one array"
- int midA = (low + high) /2;
- int midB = (a_size + b_size + 1) / 2 - midA;
- int leftA, leftB;
- int rightA, rightB;
- if (midA == 0)
- leftA = INT_MIN;
- else
- leftA = numsA[midA-1];
- if (midA == a_size)
- rightA = INT_MAX;
- else
- rightA = numsA[midA];
- if (midB == 0)
- leftB = INT_MIN;
- else
- leftB = numsB[midB - 1];
- if (midB == b_size)
- rightB = INT_MAX;
- else
- rightB = numsB[midB];
- if ( leftA <= rightB && leftB <= rightA){
- return max(leftA, leftB);
- } else if( leftA > rightB)
- high = midA - 1;
- else
- low = midA + 1;
- }
- }
- int main()
- {
- //int ar1[] = {2,3,5,8};
- //int ar2[] = {10,12,14,16,18};
- int ar1[] = {-5,3,6,12,15};
- int ar2[] = {-12,-10,-6,-3,4,10};
- int n1 = sizeof(ar1)/sizeof(ar1[0]);
- int n2 = sizeof(ar2)/sizeof(ar2[0]);
- cout << findMedianOfTwoSortedArrays(ar1,n1,ar2,n2) << endl;
- int *A,*B,size_A,size_B;
- runProgram(A,size_A,B,size_B);
- printArray(A,size_A);
- printArray(B,size_B);
- cout << findMedianOfTwoSortedArrays(A,size_A,B,size_B);
- return 0;
- }
Add Comment
Please, Sign In to add comment