Я пытаюсь вставить значения из списка B в список A.
Список A всегда сортируется в порядке убывания и может быть довольно большим (2x10 ^ 5).
Список B всегда сортируется в порядке возрастания, а также может иметь размер 2x10 ^ 5
. Я хочу вставить значения от B до A, сохраняя при этом порядок убывания. Я использовал бинарный поиск, чтобы найти позиции индекса, в которые нужно добавить значение.
Однако в этом одном тестовом примере у меня есть странная ошибка, которую я не могу исправить
def binarySearch(arr, low, high, x):
while low < high:
mid = low + (high - low) // 2;
if arr[mid] == x:
return mid
elif arr[mid] < x:
high = mid - 1
else:
low = mid + 1
if low >= high:
return(low)
for i in B:
indexpos = binarySearch(A, 0, len(A)-1, i)
if indexpos == 0:
A = [i] + A
else:
A = A[:indexpos+1] + [i] + A[indexpos+1:]
print(A)
Вот пример, который работает:
A = [100,100,50,40,40,20,10]
B = [5,25,50,120]
Output: A = [120, 100, 100, 50, 50, 40, 40, 25, 20, 10, 5]
Я не могу понять, почему этот не работает:
A = [100,90,90,80,75,60]
B = [50,65,77,90,102]
Output: A = [102, 100, 90, 90, 90, 80, 75, 77, 65, 60, 50]
Любая помощь будет очень принята