TopN指的是从已经存在的数组中,找出最大(或最小)的前n个元素。
算法的核心就是循环数组,并将当前的最大的n个数存入一个数组topN[n]中,插入结束后对数组进行排序。当循环到第k+1个数时,与topN[0]比较,若比topN[0]大,则替换topN[0]为第k+1个数,并对topN[n]排序;若比topN[0]小,则比较下一个数。
下面是实现方法:
package com.xiva.cms.data.test; import java.util.Date; import java.util.Random; import com.xiva.cms.data.util.SortService; /** * Top N 算法 * @author XIVA * */ public class TopNAlgorithm { public static int[] datas = new int[100000000]; /** * 生成测试数据 */ public static void genarateData() { Random random = new Random(new Date().getTime()); for (int i=0; i < datas.length; i++) { datas[i] = random.nextInt(1000000000); } } /** * main 方法 * @param args */ public static void main(String[] args) { SortService<Integer> sortSrv = new SortService<Integer>(); int topN = 100; Integer[] topNData = new Integer[topN]; System.out.println("Start genarate Data."); TopNAlgorithm.genarateData(); System.out.println("End genarate Data."); // 初始化 Top N for(int i=0; i < topN; i++) { topNData[i] = 0; } System.out.println("Search for top N Starting."); // 获取TopN for ( int i = 0; i < datas.length; i++) { int num = datas[i]; if (num % 1000000 == 0) { System.out.println("Search for top N index:" + i); } if (topNData[0] < num) { topNData[0] = num; // 使用折半插入排序 sortSrv.binaryInsertSort(topNData, 1); } } for (int i = 0; i < topNData.length; i++) { System.out.println("Top N:" + topNData[i]); } System.out.println("Search for top N ended."); } }
相关推荐
Spark中实现MapReduce的TopN算法,分为唯一键TopN算法,非唯一键TopN算法和Group内的TopN算法
【题目】内存中的行列结构的数据集,存在主键 k,求 TopN 算法 上述题目在多核环境下的优化 数据集大小为 1TB,分布规律未知。存储在某存储服务上,以 get(min_k, max_k) 接口获取数据,求多台服务器的计算方案 原题...
为解决上述问题,提出了基于用户谱聚类的Top-N协同过滤推荐算法(SC-CF),即应用谱聚类将兴趣相似的用户分成一类,具有相似兴趣爱好的用户比其他用户具有更高的推荐参考价值,然后在类中为目标用户推荐。SC-CF 算法...
topn算法的堆实现,即从大量数据中寻找最大或最小的N个数
queue[top].nodesun[m][n]=queue[minnumber].nodesun[i][j]; queue[top].nodesun[i][j]=0; /////////////////////////////////////// //空格移动方向 queue[top].x=i; queue[top].y=j; ///////////////...
首先将该数据集包含的全部文件经过筛选重组之后存储到建好的数 据库中,并将数据集按一定比例划分为训练集和测试集,对训练集进行算法分析生成Top-N 个性化电影推荐列表,然后在测试集上对算法进行评测,至少包括...
对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】: 有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 鼓励下载和使用,并欢迎大家互相学习,共同...
基于矩阵补全算法IGMC的MovieLens电影评分预测及Top-N推荐项目python源码.zip 【资源介绍】 该项目是个人毕设项目,答辩评审分达到95分,代码都经过调试测试,确保可以运行!欢迎下载使用,可用于小白学习、进阶。 ...
在以往工作或者面试的时候常会碰到一个问题,如何实现海量TopN,就是在一个非常大的结果集里面快速找到最大的前10或前100个数,同时要保证内存和速度的效率,我们可能第一个想法就是利用排序,然后截取前10或前100,...
首先将该数据集包含的全部文件经过筛选重组之后存储到建好的数 据库中,并将数据集按一定比例划分为训练集和测试集,对训练集进行算法分析生成Top-N 个性化电影推荐列表,然后在测试集上对算法进行评测,至少包括...
首先将该数据集包含的全部文件经过筛选重组之后存储到建好的数 据库中,并将数据集按一定比例划分为训练集和测试集,对训练集进行算法分析生成Top-N 个性化电影推荐列表,然后在测试集上对算法进行评测,至少包括...
首先将该数据集包含的全部文件经过筛选重组之后存储到建好的数 据库中,并将数据集按一定比例划分为训练集和测试集,对训练集进行算法分析生成Top-N 个性化电影推荐列表,然后在测试集上对算法进行评测,至少包括...
#include #include //#define error 0 //#define OVERFLOW -1 ... printf("\n Creat a Binary Tree .\n"); //建立一棵二叉树T* CreateBiTree( &T ); printf ("\nThe preorder is:\n"); inordertraverse(T); }
置信度和提升度进行度量计算,从而使算法快速且存储效率高结果结构结果返回三个Numpy Matrcies: Order_of_products:这是一维数组,具有按特定顺序显示的唯一商品Top_N_for_each_product:这是一个2D数组(产品数量...
首先将该数据集包含的全部文件经过筛选重组之后存储到建好的数 据库中,并将数据集按一定比例划分为训练集和测试集,对训练集进行算法分析生成Top-N 个性化电影推荐列表,然后在测试集上对算法进行评测,至少包括...
用栈实现了计算器。编程语言是c++. struct save1 { char n[MAX]; int top; }stack1; struct save2 { char n[MAX]; int top; }stack2; //stack1存储数字,stack2存储运算符号.
首先将该数据集包含的全部文件经过筛选重组之后存储到建好的数 据库中,并将数据集按一定比例划分为训练集和测试集,对训练集进行算法分析生成Top-N 个性化电影推荐列表,然后在测试集上对算法进行评测,至少包括...
站点统计:记录用户访问数,页面浏览数
* 递归和栈之间有着紧密的联系,大部分的编译器使用栈实现递归的。 * * 调用方法的时候发生什么: * 1. 编译器会把这个方法所有当前参数及返回地址压入栈中; * 2. 将控制权交给这个方法,方法通过获得栈顶...