Advertisement
Guest User

Untitled

a guest
Jul 27th, 2017
52
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.40 KB | None | 0 0
  1. import math
  2. import time
  3. A = [4,8,19,20,23,28]
  4. B = [2,3,5,9,12,17]
  5. m = 5
  6. n = 5
  7. k = 0
  8. while k < (m+n+2):
  9.     #k = input("Enter a k value: ")
  10.     k = k+1
  11.     print "Searching on k = "+`k`
  12.     done = 0
  13.  
  14.     #check if only one list is used
  15.     if k <= m and A[k-1] <= B[0]:
  16.         print A[k-1]
  17.         done = 1
  18.     if k <= n and B[k-1] <= A[0]:
  19.         print B[k-1]
  20.         done = 1
  21.     #if it gets here it means that both are used
  22.     i = min(k - 1, m)
  23.     ia = max((k - 2) - n, 0)
  24.     ib = i
  25.     j = (k - 2) - i
  26.     #invariant: i+j = k-2
  27.     while done == 0:
  28.         #print `ia`+" "+`i`+"("+`j`+") "+`ib`
  29.         if B[j] < A[i]:
  30.             if j == n:
  31.                 print A[i]
  32.                 done = 1
  33.                 continue
  34.             else:
  35.                 if A[i] < B[j+1]:
  36.                     print A[i]
  37.                     done = 1
  38.                     continue
  39.         if A[i] < B[j]:
  40.             if i == m:
  41.                 print B[j]
  42.                 done = 1
  43.                 continue
  44.             else:
  45.                 if B[j] < A[i+1]:
  46.                     print B[j]
  47.                     done = 1
  48.                     continue
  49.  
  50.         if A[i] > B[j]:
  51.             ib = i
  52.             i = int(math.floor((i+float(ia))/2.0))
  53.             j = (k - 2) - i
  54.         if A[i] <= B[j]:
  55.             ia = i
  56.             i = int(math.floor((i+float(ib))/2.0))
  57.             j = (k - 2) - i
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement