—900元
—高了。
—850元。
—猜中了。
由材料可知,报价过程具有一定的技巧性,可以运用查找的算法优化,这种查找需要先找有序数列的,重复操作,一步一步确定一个较小的范围。
为了热点之间比较方便,小钟设置了一个热度值来衡量一个热点的热度大小,热度值越大说明这个热点的热度越高。现在小钟已经获得了如下两个平台的热度值从小到大的排行榜,正当他打算将之合并为一个从小到大的排行榜时,却被老师叫走了。于是他决定把这个小功能交给他的好朋友——你来实现,你想到2种算法,请把下列程序填写完整。
A |
P10 |
P9 |
P8 |
P7 |
P6 |
P5 |
P4 |
P3 |
P2 |
P1 |
11 |
66 |
116 |
329 |
438 |
582 |
652 |
714 |
756 |
925 |
|
B |
E10 |
E9 |
E8 |
E7 |
E6 |
E5 |
E4 |
E3 |
E2 |
E1 |
35 |
116 |
215 |
271 |
309 |
428 |
576 |
772 |
806 |
950 |
Python程序如下:
A= [11,66,116,329,438,582,652,714,756,925]
B = [35,116,215,271,①,428,576,772,806,950]
算法一:
myRank =
i = 0
j = 0
while (i < len(A) and j < len(B)):
if (A[i] < B[j]):
②
i += 1
else:
myRank.append(B[j])
j += 1
while (i < len(A)):
myRank.append(A[i])
i += 1
else:
while (③):
myRank.append(B[j])
j += 1
print(myRank)
算法二:
myRank = [0]*(len(A)+len(B))
i = 0
j = 0
k = 0
while (④):
k = i+j
if (i >= len(A)):
myRank[k] = B[j]
j += 1
elif (j >= len(B)):
myRank[k] = A[i]
i += 1
elif (⑤):
myRank[k] = A[i]
i += 1
else:
myRank[k] = B[j]
j += 1
print(myRank)
①针对所有的元素重复以上的步骤,除了最后一个。
②比较相邻的元素。如果第一个比第二个大,就交换位置。
③持续每次对越来越少的元素重复上面的步骤,直到没有任何—对数字需要比较。
④对每一对相邻元素做同样的工作,从开始第一对到结尾的最后— 对。在这一轮,最后的元素应该会是最大的数。