Что не так с этим кодом для BinarySearch? - PullRequest
0 голосов
/ 25 марта 2020

Это код бинарного поиска python, и при запуске он не работает.

# Binary Search

def BinarySearch(*args, key, size):
    low = 0
    high = size - 1
    while low <= high:
        mid = (low + high) / 2
        if key < args[mid]:
            high = mid - 1
        else:
            if key > args[mid]:
                low = mid + 1
            else:
                return mid + 1
    return -1

arraySize = 10
A = [num * 2 for num in range(10)]
print("Numbers in array are : ", A)
searchKey = input("Enter integer search key : ")
element = BinarySearch(A, searchKey, arraySize)
if element != -1:
    print("Found value in element : ", element)
else:
    print("Value not found.") 

Ошибка выглядит следующим образом:

Ошибка типа: BinarySearch ( ) отсутствует 2 обязательных аргумента только для ключевых слов: «ключ» и «размер» Итак, что с ним не так? Пожалуйста, помогите:)

Ответы [ 2 ]

0 голосов
/ 25 марта 2020

В вашей программе несколько ошибок.

  1. Вы должны поместить * args и ** args после аргументов позиции и ключевого слова.

  2. Допустим, вы изменили определение функции. Теперь он преобразует массив в кортеж, который не будет работать в соответствии с вашим al go .it, он преобразует список в кортеж списков.

        def BinarySearch( key, size,*args):
              pass
    
        [] -> ([], )   
    

3. Итак, вам нужно разместить только часть массива. См. Приведенный ниже код.

    # Binary Search

def BinarySearch(arr, key, size):
    print(args)
    low = 0
    high = size - 1
    while low <= high:
        mid = (low + high) // 2
        if key < args[mid]:
            high = mid - 1
        else:
            if key > args[mid]:
                low = mid + 1
            else:
                return mid + 1
    return -1

arraySize = 10
A = [num * 2 for num in range(10)]
print("Numbers in array are : ", A)
searchKey = input("Enter integer search key : ")
element = BinarySearch(A, int(searchKey), arraySize)
if element != -1:
    print("Found value in element : ", element)
else:
    print("Value not found.") 
0 голосов
/ 25 марта 2020

Изменить

element = BinarySearch(A, searchKey, arraySize)

на

element = BinarySearch(A, key=searchKey, size=arraySize)
...