Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import random
- values = []
- def generate(samplesize,samplerange):
- for count in range(samplesize):
- nextnumber = random.randint(1,samplerange)
- values.append(nextnumber)
- #print(values)
- values.sort()
- #print(values)
- def binsearch(values,number):
- found = False
- lower = 0
- upper = len(values)-1
- mid = int((upper+lower)/2)
- while not found and lower<=upper:
- mid = int((upper+lower)/2)
- #print(str(lower)+" - "+str(mid)+" - "+str(upper))
- if values[mid]>number:
- upper = mid -1
- elif values[mid]<number:
- lower = mid + 1
- else:
- found=True
- if found:
- return mid
- else:
- return -1
- def locaterange(values, number):
- target = binsearch(values,number)
- if target >-1:
- lower = target
- upper = target
- found = False
- while not found:
- if lower>0:
- if values[lower-1]==values[lower]:
- lower=lower-1
- else:
- found=True
- else:
- found=True
- found = False
- while not found:
- if upper<len(values)-1:
- if values[upper+1]==values[upper]:
- upper=upper+1
- else:
- found = True
- else:
- found = True
- return[lower,upper]
- else:
- return "Not Found!"
- generate(100,100)
- mynumber = 100
- print(binsearch(values,mynumber))
- print(locaterange(values,mynumber))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement