2、选择排序

选择排序

1、数组和链表

 

 

 

 

2、代码示例(歌曲播放排序)

 1 from prettytable import PrettyTable
 2 
 3 # 根据key获取value
 4 def getKeys(musicDict,value):
 5     for k,v in musicDict.items():
 6         if v == value:
 7             return k,v
 8 
 9 # 寻找当前一轮的最小值
10 def findSmall(musicDict):
11     listValues = list(musicDict.values())
12     # 每次选取第一个元素为临时最大值
13     maxPlays = listValues[0]
14     for i in range(1,len(listValues)):
15         if maxPlays < listValues[i]:
16             maxPlays = listValues[i]
17     return getKeys(musicDict,maxPlays)
18 
19 # 选择排序
20 def selectionSort(musicDict):
21     musicRank = {}
22     for i in range(len(musicDict)):
23         key,value = findSmall(musicDict)
24         musicRank[key] = value
25         musicDict.pop(key)
26 
27     return musicRank
28 
29 if __name__ == '__main__':
30     musicDict = {
31         "RADIOHEAD": 156,
32         "KISHORE KUMAR":141,
33         "THE BLACK KEYS":35,
34         "NEUTRAL MILK HOTEL":94,
35         "BECK":88,
36         "THE STROKES":61,
37         "WILCO":111
38     }
39     sortDict = selectionSort(musicDict)
40     table = PrettyTable()
41     table.field_names = ["\033[1m歌曲名","播放次数\033[0m"]
42     for k,v in sortDict.items():
43         table.add_row([k,v])
44     print(table)

 

3、总结

计算机内存犹如一大堆抽屉。
需要存储多个元素时,可使用数组或链表。
数组的元素都在一起。
链表的元素是分开的,其中每个元素都存储了下一个元素的地址。
数组的读取速度很快。
链表的插入和删除速度很快。
在同一个数组中,所有元素的类型都必须相同(都为intdouble等)。

4、应用场景

电话簿中的人名
旅行日期
电子邮件(从新到旧)

posted @ 2020-10-30 14:55  Dammond  阅读(67)  评论(0)    收藏  举报