在面试一个应聘者之后,我们能够给每人一个分数score。在面试过j个人之后,我们知道这j个人中的最高分,但是不知道后面的n-j个会不会有最高的。
我们决定采取如下策略:
选择一个正整数k<n。面试然后拒绝前k个应聘者,再雇佣其后比前面的应聘者有更高分数的第一个应聘者。
如果最高得分的应聘者在前k个应聘者。我们将雇佣第n个应聘者。
class Assitant:
def __init__(self,a_name="anonymous",value=0):
self.name = a_name
self.score = value
def on_line_maximum(k,assList):
n = len(assList)
bestscore = float("-inf")
for i in range(k):
if assList[i].score > bestscore:
bestscore = assList[i].score
for i in range(k,n):
if assList[i].score > bestscore:
return assList[i]
return assList[n-1]运行:
>>> assList = [Assitant("dawei",16),Assitant("weimin",18),Assitant("peifang",36),Assitant("sunli",12),Assitant("shaoyun",99),Assitant("yuzheng",78)]
>>> people = on_line_maximum(3,assList)
>>> people.name
'shaoyun'
本文介绍了一种在线最大值算法的应用实例,该算法用于从一系列应聘者中选择最高分的候选人。通过设定一个阈值k,忽略前k个应聘者的分数,并在后续应聘者中寻找第一个分数超过已知最高分的人选。
305

被折叠的 条评论
为什么被折叠?



