挑选零食--序列的堆排序

Posted 编程人与编程人

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了挑选零食--序列的堆排序相关的知识,希望对你有一定的参考价值。


小技巧:将自己喜欢吃的放在后面,留着自己吃,不喜欢的放在前面,让其他人先吃


吃法1:挑出自己喜欢吃的和不喜欢吃的

import heapqimport random
0,1,2,3,...,9favour = [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 heapqfavour = [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]


以上是关于挑选零食--序列的堆排序的主要内容,如果未能解决你的问题,请参考以下文章

算法——堆排序(大根堆--升序)

算法:堆排序

Swift之算法:插入排序

(王道408考研数据结构)第八章排序-第二节:直接插入排序和希尔排序

数据结构中的堆(Heap)

(王道408考研数据结构)第八章排序-第二节:直接插入排序和希尔排序