挑选零食--序列的堆排序
Posted 编程人与编程人
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了挑选零食--序列的堆排序相关的知识,希望对你有一定的参考价值。
小技巧:将自己喜欢吃的放在后面,留着自己吃,不喜欢的放在前面,让其他人先吃
吃法1:挑出自己喜欢吃的和不喜欢吃的
import heapq
import random
# 0,1,2,3,...,9
favour = [i for i in range(10)]
# 现在自己的零食乱糟糟的
random.shuffle(favour)
high_favour = heapq.nlargest(3, favour)
low_favour = heapq.nsmallest(3, favour)
也可以根据包装的精美程度挑选
# 事实上,favour 与 beauty 没有任何联系
sequence = [
{'favour': 0, 'beauty': 0},
{'favour': 1, 'beauty': 1},
...
{'favour': 9, 'beauty': 9},
]
high_beauty = heapq.nlargest(3, sequence, key=lambda s: s['beauty'])
low_beauty = heapq.nsmallest(3, sequence, key=lambda s: s['beauty'])
原理:堆排序
import heapq
favour = [i for i in range(10)]
# 现在自己的零食乱糟糟的
random.shuffle(favour)
# 堆排序
heapq.heapify(favour)
# 堆排序后,favour[0]永远是最小的
什么是堆?
大顶堆:
arr[i] >= arr[2i+1] && arr[i] >= arr[2i+2]
小顶堆:
arr[i] <= arr[2i+1] && arr[i] <= arr[2i+2]
以上是关于挑选零食--序列的堆排序的主要内容,如果未能解决你的问题,请参考以下文章