1234567891011121314151617181920212223242526272829303132333435363738394041424344454647 |
- # Copyright (C) 2020, 2019 Girish M
- # This program is free software; you can redistribute it and/or modify
- # it under the terms of the GNU General Public License as published by
- # the Free Software Foundation; either version 3 of the License, or
- # (at your option) any later version.
- #
- # This program is distributed in the hope that it will be useful,
- # but WITHOUT ANY WARRANTY; without even the implied warranty of
- # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- # GNU General Public License for more details.
- #
- # You should have received a copy of the GNU General Public License
- # along with this program; if not, write to the Free Software
- # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
- # MA 02110-1301, USA.
- #
- '''
- Write a function that takes an ordered list of numbers (a list where the elements are in order from smallest to largest) and another number.
- The function decides whether or not the given number is inside the list and returns (then prints) an appropriate boolean.
- Extras:
- Use binary search.
- '''
- # @author prince
- import math
- x = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
- n = int(input("enter a number, and we'll see if it's in the list: "))
- low = 0
- high = 9
- listLength = len(x)
- def binarysearch(n, x, low, high):
- mid = math.ceil((low + high)/2)
- if mid >= 0 and mid < listLength:
- if n == x[mid]:
- return True
- if n < x[mid]:
- high = mid -1
- if n > x[mid]:
- low = mid + 1
- return binarysearch(n, x, low, high)
- else:
- return False
- print(binarysearch(n, x, low, high))
|