2016-06-04 4 views
-1

Мне было интересно, как написать бинарный поиск, который ищет самые популярные имена детей с 2009 по 2014 год, имена хранятся в списке, а затем я, когда я получите подсказку с просьбой о том, что я хотел бы искать, тогда я бы набрал имя и дал бы, сколько раз он повторил, чтобы найти определенное имя, а также имена в формате JSON и в алфавитном порядке, чтобы я мог сравнивать символы . Я планирую написать это в python 3. Любая помощь будет принята с благодарностью.Как написать двоичный поиск, который ищет слова в списке

termToFind = input("What would you like to find? ") 
    tempMeds = [] 
for me in allMeds: 
    if len(me) >= len(termToFind): 
    tempMeds.append(me) 
findLength = len(termToFind) 
currentPos = len(tempMeds) // 2 
stop = False 
iterations = 0 
amountFound = 0 
prevVal = "" 
+1

Что вы пытаетесь? Мы не здесь, чтобы [дать вам код] (http://meta.stackexchange.com/questions/108551/what-site-to-use-if-you-have-a-gimme-teh-codez-question) , –

+0

У меня есть список, содержащий имена, и еще один пустой массив, в который я его помещу. @MoonCheesez –

+0

Я только что обновил код @MoonCheesez –

ответ

1

Зачем вам нужен бинарный поиск? Что делать, если вы использовали collections.Counter?

Просто передайте свой список (не имеет значения, если он отсортирован или нет) детских имен в Counter, а затем LookUp любое имя вы заинтересованы в:

import json 
from collections import Counter 

json_baby_names = '["aardvark", "apple", "apple", ...., "zeus"]' 
baby_name_counts = Counter(json.loads(json_baby_names)) 

>>> baby_name_counts['apple'] 
2 

Если вы хотите наиболее популярное название, вы можете использовать Counter.most_common():

>>> baby_name_counts.most_common(1) 
[('apple', 2)] 
+0

Причина, по которой я хочу использовать двоичный поиск, заключается в том, что, по-моему, для меня было бы хорошей практикой познакомиться с ними, поэтому я смогу использовать их позже в других программах, которые я пишу. @mhawke –