Для задания нам было предложено написать функцию, которая принимает в качестве входов 2 списка, а затем возвращает список, содержащий все имена, которые были как в «списке 1», так и в «списке 2».Merge Sort 2 Lists Поиск общих элементов
Было предложено выполнить алгоритм сортировки по методу слияния. То, что у меня до сих пор возвращает правильный список, однако я делаю слишком много сравнений, чтобы получить этот список. VoterList - это заданный нам класс, так что мы не используем обычные списки python. Только объекты VoterName (из которых состоят два списка входных данных), могут быть добавлены в VoterList. Перечисляемые списки находятся в лексикографическом порядке.
Любые советы о том, как уменьшить мои сравнения, приветствуются. Спасибо.
from classes import VoterList
def fraud_detect_merge(first_booth_voters, second_booth_voters):
fraud = VoterList()
length_first = len(first_booth_voters)
length_second = len(second_booth_voters)
first_booth_position = 0
second_booth_position = 0
comparisons = 0
while first_booth_position < length_first:
if second_booth_position == length_second:
first_booth_position += 1
second_booth_position = 0
else:
name_comparison = first_booth_voters[first_booth_position]
comparisons += 1
if second_booth_voters[second_booth_position] == name_comparison:
fraud.append(second_booth_voters[second_booth_position])
first_booth_position += 1
second_booth_position = 0
else:
second_booth_position += 1
return fraud, comparisons
спасибо. Это было очень полезно. Не делал это точно, но это вдохновляло другое :) – Mikey
Эй, есть ли шанс, что я мог бы быстро зайти в чат с вами? спасибо :) – Mikey