课件编号20219629

项目挑战: 学校微课平台推荐功能设计 课件(15张PPT)

日期:2024-05-20 科目:信息技术 类型:高中课件 查看:62次 大小:1242190Byte 来源:二一课件通
预览图 1/7
项目,挑战,学校,微课,平台,推荐
  • cover
(课件网) 项目挑战:学校微课平台推荐功能设计 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]]=1 else: dic[lst[i][2]]+=1 第一步:统计每个视频的点播次数 数组法实现推荐规则1 menu=[[0,0]]*4 for 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+=1 menu[-1][2]=-1 第一步:初始化,构建无序链表 def linksort(lst): head=0;cur=lst[head][2] ; pre=head while cur!=-1: lst[pre][2]=-1;p=head nt=lst[cur][2];v=lst[cur][1] if v>lst[head][1]: lst[cur][2]=head;head=cur else: while v<=lst[p][1] and p!=-1: q=p;p=lst[p][2] lst[q][2]=cur; lst[cur][2]=p if p==-1: pre=cur cur=nt return head 第二步:对链表进行插入排序 链表法实现 head=linksort(menu) rclnk(menu,head,5) 第三步:输出链表中播放次数较多的前n位 def rclnk(lst,head,n): i=1 while lst[head][2]!=-1 and i

~~ 您好,已阅读到文档的结尾了 ~~