我的问题接受一个 (listof plane) 结构,其中飞机是一个列表 [airplane_code, date, price]:
- plane_code 是飞机名称
- 日期为 1-365(含),其中所有日期对于每架飞机可能不是唯一的
- price 是 int[>=0],其中每架飞机的所有价格都是唯一的
该函数还产生一个(平面列表)。我需要先根据我的函数接受的另外两个变量(start_date 和 end_date),然后按价格(按升序)过滤此列表。但是,我仅限于使用二进制搜索概念来排序价格:
def binary_search(lst, target):
beginning = ...
end = ...
while ...:
middle = ...
if lst[middle] < target:
...
##update beginning and end
else:
...
##update beginning and end
我无法弄清楚二进制搜索如何让我对列表进行排序,并希望得到任何帮助。这是我到目前为止所做的(过滤给定的日期变量):
def determine(planes, start_date, end_date):
correct_planes = []
plane_price = []
final_selection = []
for plane in planes:
if plane[1] >= start_date and plane[1] <= end_date:
correct_planes.append(plane)
plane_price.append(plane[2])
该函数如何工作的示例:
plane_list = [['A11', 215, 300], ['A22', 260, 750], ['A33', 230, 600], ['A44', 300, 400]]
确定(plane_list, 200, 260) => [['A11', 215, 300], ['A33', 260, 600], ['A22', 260, 750]]