资源简介 (共15张PPT)项目挑战:学校微课平台推荐功能设计LOREM IPSUM DOLOR总结评价1项目任务根据项目任务构建模型2编程实现合理使用数组、链表解决实际问题分别用数组、和链表实现3推荐算法学校新建了一个微课平台,用来展示校内教师和学生自制的微课。为了更好地服务师生,学校想增加微课平台的推荐功能,即当某个用户点播了某个微课后,平台会依据一定的规则推荐相关的微课。假如你作为平台的设计者,现在需要你来开发实现这个微课平台的推荐功能。项目任务推荐规则1:以用户类型做推荐,如用户类型是“高一”,则推荐点播次数最多的前n个高一课程推荐规则2:以微课类型做推荐,如微课类型是“语文”,则推荐点播次数最多的前n个语文课程提问:你对以上两个推荐规则有什么看法,能提出自己设计的推荐规则吗?推荐规则根据你的推荐规则,所设计的数据特点是什么?选择数组还是链表来实现?先谈谈数组和链表各自的特点吧!数据结构选择数组优点:因为连续存储,可以随机存取元素,实现方便数组缺点:空间大小固定,易浪费空间。插入和删除操作较浪费性能(可能会产生大量元素的移动)数据结构选择链表优点:空间利用灵活链表缺点:存取麻烦每次存取需要从头节点(head)开始搜索数据结构选择编程实现语言编程工具types=input("输入年级")lst中一个元素内容如:[[姓名,年级,微课类型]]代码略dic={}#初始化空字典for i in range(n):if lst[i][1]==types:if lst[i][2] not in dic:dic[lst[i][2]]=1else:dic[lst[i][2]]+=1第一步:统计每个视频的点播次数数组法实现推荐规则1menu=[[0,0]]*4for i in range(4):for key,values in dic.items():if dic[key]>menu[i][1] and [key,values] not in menu:menu[i]=[key,values]第二步:按点播次数多少排列数组法实现推荐规则1运行程序数组法实现推荐规则1链表法实现构建字典dic,以课程名为键(key),点播次数为值(value)for key,values in dic.items():menu.append([key,values,p])p+=1menu[-1][2]=-1第一步:初始化,构建无序链表def linksort(lst):head=0;cur=lst[head][2] ; pre=headwhile cur!=-1:lst[pre][2]=-1;p=headnt=lst[cur][2];v=lst[cur][1]if v>lst[head][1]:lst[cur][2]=head;head=curelse:while v<=lst[p][1] and p!=-1:q=p;p=lst[p][2]lst[q][2]=cur; lst[cur][2]=pif p==-1:pre=curcur=ntreturn head第二步:对链表进行插入排序链表法实现head=linksort(menu)rclnk(menu,head,5)第三步:输出链表中播放次数较多的前n位def rclnk(lst,head,n):i=1while lst[head][2]!=-1 and iprint(lst[head],end="→")head=lst[head][2]i+=1lst[head][2]=-1print(lst[head],end="→")print("None")链表法实现评价 展开更多...... 收起↑ 资源预览