当前位置: 首页 > news >正文

使用堆实现Top K 算法 JS 实现

1. 使用堆算法实现Top,时间复杂度为 O(LogN)


function top(arr,comp){
if(arr.length == 0){return ;}
var i = arr.length / 2 | 0 ;
for(;i >= 0; i--){
if(comp(arr[i], arr[i * 2])){exch(arr, i, i*2);}
if(comp(arr[i], arr[i * 2 + 1])) {exch(arr, i, i*2 + 1);}
}
return arr[0];


}


function exch(arr,i,j){
var t = arr[i];
arr[i] = arr[j];
arr[j] = t;
}



2. 调用K次堆实现,时间复杂度为 O(K * LogN)
function topK(arr,n,comp){
if(!arr || arr.length == 0 || n <=0 || n > arr.length){
return -1;
}


var ret  = new Array();
for(var i = 0;i < n; i++){
var max = top(arr,comp);
ret.push(max);
arr.splice(0,1);
}
return ret;
}






3.测试
var ret = topK(new Array(16,22,91,0,51,44,23),3,function (a,b){return a < b;});
console.log(ret);


相关文章:

  • 无需上传 不必架设FTP 轻松完成文件共享
  • 快速幂算法 - JS 实现
  • Ubuntu 9.04试用过程全接触
  • 算法练习--二分搜索哈希表-JS 实现
  • 网友试用Ubuntu 9.04 Beta版的测评
  • WordPress 被注入 Google Analysis Code 的解决办法
  • MongoDb C# Wrapper 类 (MongoDb Driver 1.9)
  • [Windows编程] 监视DLL装载/卸载
  • 那些开发中用到的模式——访问者模式
  • 浏览器的几个感悟
  • 本地配置 MongoDb
  • Symbian下获取GSM Cell信息
  • C# 操作MongoDb 错误Element '_v' does not match any field or property of class XXX
  • 双硬盘双系统WINDOWS XP Ubuntu 的启动设置
  • 使用github 配置bitbucket SSH
  • 网络传输文件的问题
  • [case10]使用RSQL实现端到端的动态查询
  • emacs初体验
  • JavaScript DOM 10 - 滚动
  • JavaScript标准库系列——Math对象和Date对象(二)
  • JavaScript服务器推送技术之 WebSocket
  • js 实现textarea输入字数提示
  • JS+CSS实现数字滚动
  • springboot_database项目介绍
  • Terraform入门 - 3. 变更基础设施
  • Vue--数据传输
  • 分类模型——Logistics Regression
  • 7行Python代码的人脸识别
  • PostgreSQL之连接数修改
  • 好程序员web前端教程分享CSS不同元素margin的计算 ...
  • ​2021半年盘点,不想你错过的重磅新书
  • ​草莓熊python turtle绘图代码(玫瑰花版)附源代码
  • ​创新驱动,边缘计算领袖:亚马逊云科技海外服务器服务再进化
  • ​决定德拉瓦州地区版图的关键历史事件
  • ​软考-高级-系统架构设计师教程(清华第2版)【第9章 软件可靠性基础知识(P320~344)-思维导图】​
  • $.ajax()方法详解
  • (+3)1.3敏捷宣言与敏捷过程的特点
  • (Git) gitignore基础使用
  • (html转换)StringEscapeUtils类的转义与反转义方法
  • (poj1.2.1)1970(筛选法模拟)
  • (八)Flask之app.route装饰器函数的参数
  • (黑马C++)L06 重载与继承
  • (汇总)os模块以及shutil模块对文件的操作
  • (四) Graphivz 颜色选择
  • (五) 一起学 Unix 环境高级编程 (APUE) 之 进程环境
  • (转)大型网站架构演变和知识体系
  • .equals()到底是什么意思?
  • .NET开源快速、强大、免费的电子表格组件
  • .net实现客户区延伸至至非客户区
  • /var/spool/postfix/maildrop 下有大量文件
  • ?
  • @manytomany 保存后数据被删除_[Windows] 数据恢复软件RStudio v8.14.179675 便携特别版...
  • @zabbix数据库历史与趋势数据占用优化(mysql存储查询)
  • [20180224]expdp query 写法问题.txt
  • [Angular] 笔记 8:list/detail 页面以及@Input