从一批数据中查找前10个最大值。正常的想法是构建一个10个数的数组,轮询查找的数据并与10个数中最小的比较,然后替换。
另一种思路采用大顶堆的方式。但是只用构建10次大顶堆即可。
多次运行程序后的结论:
100000000个数中普通查找速度大概是18秒,而堆方式查找只有13秒,随着数据量的增大,差距会更加明显。
普通排序:
public class NormalSort {
private static int array[] = new int[10000000000];
private static int base[] = new int[10];
public static void main(String[] args) {
init();
long t = System.currentTimeMillis();
sort();
sysout(t);
}
private static void sysout(long t) {
for(int i =0; i < base.length; i ++){
System.out.println(base[i]);
}
System.out.println("cost time =" + (System.currentTimeMillis()-t));
}
private static void init() {
for(int i =0; i < array.length; i++){
array[i] = (int)Math.round(Math.random() * array.length);
}
for(int i =0; i< base.length;i++){
base[i] = array[i];
}
}
private static void sort() {
for(int i =base.length - 1; i < array.length; i++){
long min = base[0];
int index = 0;
for(int j=0; j< base.length; j++){
if(base[j] < min){
index = j;
min = base[j];
}
}
if(array[i] > min){
int tmp = array[i];
array[i] = base[index];
base[index] = tmp;
}
}
}
}
堆排序
public class HeapSort {
private static int array[] = new int[10000000000];
/**
* @param args
*/
public static void main(String[] args) {
init();
long t = System.currentTimeMillis();
sort();
System.out.println("cost time " + (System.currentTimeMillis() - t));
}
private static void init() {
for (int i = 0; i < array.length; i++) {
array[i] = (int)Math.round(Math.random() * array.length);
}
}
private static void adjust(int array[], int i, int length) {
int child;
int temp;
for (temp = array[i]; 2 * i + 1 < length; i = child) {
child = 2 * i + 1;
if (child < length - 1 && array[child + 1] > array[child])
++child;
if (temp < array[child]) {
array[i] = array[child];
array[child] = temp;
} else
break;
}
}
private static void sort() {
for (int i = array.length / 2; i >= 0; --i)
adjust(array, i, array.length);
int tmp;
for (int i = array.length - 1; i >= array.length - 11; --i) {
tmp = array[i];
array[i] = array[0];
array[0] = tmp;
adjust(array, 0, i);
}
for (int i = array.length - 11; i < array.length; i++) {
System.out.println(array[i]);
}
}
}
分享到:
相关推荐
大数据结构课程设计--哈希表实验报告材料
大数据云计算查找信息干扰源初探.pdf
《大数据科学/大数据丛书系列》从大数据的概念、特征、发展意义,追溯大数据的起源和发展历程,大数据作为科学领域与其他科学的交叉互联的关系,以及大数据的技术和应用的角度多方位阐述了大数据作为一门科学的意义...
使用Bitmap方式实现大数据查找,简洁的代码很直接的阐述了Bitmap的原理
大数据-算法-改进的基于分步的复合模式查找算法研究.pdf
《大数据与机器学习-实践方法与行业案例》读书笔记&思维导图,看书时做的笔记,分章节写的,比较全,方便查找。
论文框架 2 TopKS算法 3 基于项目层次结构相似性的推荐算法 4 矩阵分解并行化 5 总结与展望 1 课题背景与研究意义 大数据应用-基于大数据的推荐算法研究全文共35页,当前为第2页。 图书推荐 新闻推荐 亚马逊 当当网...
大数据基础-Linux基础详解课程
大数据-算法
互联网中,关于大数据研究的最新介绍。如何利用大数据挖掘的技术,解决物联网中的实际问题。
很多年前,人们就开始对...我有幸将这个高度技术化的课题—— 一个略显技术天赋的课题,呈献给大家,解释大数据对我们的日常生活造成的影响。这本书就是成果,它描述了大数据是如何改变我们的生活、恋爱和学习方式的。
VC++ 文件搜索查找工具,搜索文件.查找功能
本书共分为10章,第1章概述大数据算法,第2章介绍时间亚线性算法,第3章介绍空间亚线性算法,第4章概述外存算法,第5章介绍大数据外存查找结构,第6章讲授外存图数据算法,第7章概述MapReduce算法,第8章通过一系列...
⽬录结构 安装使⽤ 更换边框 边框是使⽤了 DataV ⾃带的组件,只需要去 views ⽬录下去寻找对应的位置去查找并替换就可以,具体的种类请去 DavaV 官⽹查看。 更换图表 直接进⼊ components/echart 下的⽂件修改成你...
大数据基础-题库带答案.pdf大数据基础-题库带答案.pdf
北京大学网络大数据管理与应用大作业,使用pagerank来分析微博数据。4个Spark和2个Hadoop实现
一款绿色免费的文本搜索工具,功能强大到可以检索TXT文本的内容哦,他是...您只需要指定一个搜索目录,然后输入要搜索的关键字,就可以便捷的搜索出您需要的文件了,功能强大,小巧实用,能够极大的为您节省时间哦。
适合想要了解大数据及相关技术平台的初学者,根据这个思维导图去查找资料。
2.1、查找近6个月销售额后10的商品,从而找出滞销商品,并对其销售金额进行可视化分析。 4分 销售金额作为X轴,商品名称做Y轴 要求: 1)X轴是销售金额,Y轴是商品名称(1分) 2)画出条形图(2分) 3)中文显示...
2018度大数据时代的互联网信息安全考试答案解析[下载下来查找].doc