python堆排序求topn_Java堆排序,取得前TopN个数

import java.util.Random;

/**

* Created with IntelliJ IDEA.

* User: pengfei.hpf

* Date: 14-4-29

* Time: 上午11:45

* To change this template use File | Settings | File Templates.

*/

public class HeapSortUtil {

/**

* 用堆排序方法 找出前N个最大的数

* @originalArray 原始数据数组

* @topN 需要取得的N个最大数

* @return 包含topN个最大数的数组

*/

public int[] getTopArray(int[] originalArray,int topN){

int len = originalArray.length ;

if(len <= topN){

return originalArray;

}

int[] array = new int [topN];

initHeap(originalArray);

int temp;

for(int i=0;i

array[i]= originalArray[0];

temp=originalArray[originalArray.length-i-1];

originalArray[originalArray.length-i-1]=originalArray[0];

originalArray[0]=temp;

buildHeap(0,originalArray.length-i-1,originalArray);

}

return array;

}

/**

* 创建初始无序堆

*/

private void initHeap(int[] orignalArr){

for(int i=orignalArr.length-1;i>=0;i--){

buildHeap(i,orignalArr.length,orignalArr);

}

}

/**

* 调整堆

* @param location 起始位置

* @param unSortLength 无序堆的长度

*/

private void buildHeap(int location,int unSortLength,int[] arr){

int temp;

int tempLoc;

//判断该父节点是否有左右孩子

if((tempLoc = (location+1)*2)

if(arr[tempLoc]>arr[tempLoc-1]){//如果右节点大于左节点

if(arr[tempLoc]>arr[location]){//如果右节点大于父节点 就双方交换值

temp = arr[location];

arr[location] = arr[tempLoc];

arr[tempLoc] = temp;

buildHeap(tempLoc,unSortLength,arr);//递归

}

}else{//如果左节点大于右节点

if(arr[tempLoc-1]>arr[location]){//如果左节点大于父节点

temp = arr[location];

arr[location] = arr[tempLoc-1];

arr[tempLoc-1] = temp;

buildHeap(tempLoc-1,unSortLength,arr);//递归

}

}

}else if((tempLoc =((location+1)*2-1))

if(arr[tempLoc]>arr[location]){//如果右节点大于父节点

temp = arr[location];

arr[location] = arr[tempLoc];

arr[tempLoc] = temp;

buildHeap(tempLoc,unSortLength,arr);//递归

}

}

}

public static void main(String[] args) {

int[] arr =new int[100000];

Random ran = new Random();

for (int i = 0; i < arr.length; i++) {

arr[i] = ran.nextInt(100000);

}

HeapSortUtil h = new HeapSortUtil();

long start = System.currentTimeMillis();

int topArr[] = h.getTopArray(arr, 20);

//打印出排序后的数组

for(int i=0;i

System.out.println(topArr[i]);

}

long end = System.currentTimeMillis()-start;

System.out.println("Total time:" + end + "ms");

}

}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/244313.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

开机自启动程序关闭方法_电脑非常卡,总有软件偷偷自启动?学会这1招,永久关闭它们!...

小编有一个朋友&#xff0c;前段子发微信问我&#xff0c;说他的电脑非常卡&#xff0c;重装电脑后&#xff0c;会好转许多&#xff0c;非常流畅&#xff0c;但是过了几天又卡了。我问了他的电脑配置&#xff0c;首先电脑的配置是绝对ok。当前一流水平&#xff0c;后来我远程操…

linux c socket编程详解,Linux c 网络socket编程

#include int main(){int sockfd,new_fd;struct sockaddr_in my_addr;struct sockaddr_in their_addr;int sin_size;//建立TCP套接口if((sockfd socket(AF_INET,SOCK_STrEAM,0))-1){perror("socket");exit(1);}//初始化结构体&#xff0c;并绑定2323端口my_addr.sin…

python饮料购买_Python实现的一个自动售饮料程序代码分享

写这个程序的时候&#xff0c;我已学习Python将近有一百个小时&#xff0c;在CSDN上看到有人求助使用Python如何写一个自动售饮料的程序&#xff0c;我一想&#xff0c;试试写一个实用的售货程序。当然&#xff0c;只是实现基本功能&#xff0c;欢迎高手指点&#xff0c;新手学…

C语言进制的格式字符,GB汉字文件转换成C语言Unicode十六进制字符串格式

可以用在编程环境只能用GB&#xff0c;但程序中的汉字字符串需要用C语言的Unicode十六进制字符串格式表示。可以先在字符串中直接输入汉字&#xff0c;再用此程序转换。源代码用C#//ascii & GB to unicode hexadecimal string for C language//chinese GB code : "啊&…

python udp客户端 服务器实现方式_python3实现UDP协议的简单服务器和客户端

利用python中的socket模块中的来实现UDP协议&#xff0c;这里写一个简单的服务器和客户端。为了说明网络编程中UDP的应用&#xff0c;这里就不写图形化了&#xff0c;在两台电脑上分别打开UDP的客户端和服务端就可以了。UDP:用户数据报协议&#xff0c;是一个面向无连接的协议。…

C语言实现上三角蛇形矩阵不用数组,蛇形矩阵c语言实现

【问题描述】蛇形矩阵是由1开始的自然数依次排列成的一个矩阵上三角形。如&#xff1a;1 3 6 10 152 5 9 144 8 137 1211本题要求根据输入的行数要求&#xff0c;输出对应的一个蛇形上三角矩阵【输入形式】一个整数【输出形式】与之对应的蛇形上三角矩阵【样例输入】5【样例输出…

蒙特卡洛模拟_蒙特卡洛模拟法求期权价值

今年跟朋友讨论了一个期权问题。“Earn Out”方式并购下的金融工具确认。大致条款如下(非真实情况)&#xff1a;收购一家标的企业估值15000万元。盈利预测情况如下&#xff1a;收购协议中约定了第一期支付对价50%。同时第二期对价于2021年支付50%。同时若低于2021年净利润低于9…

尚展垒等编著c语言程序设计,C语言程序设计技术实践指导

本书是《C语言程序设计技术》(尚展垒等编著&#xff0c;中国铁道出版社出版)配套使用的学习用书&#xff0c;每个实验对应主教材的相关内容。本书所使用的运行环境是Visual Studio 2010&#xff0c;与全国计算机等级考试(二级C语言)的运行环境一致。本书的每个实验项目均在 Vis…

python爬取歌曲评论_python 爬取歌曲评论的简单示例

这篇文章主要为大家详细介绍了python 爬取歌曲评论的简单示例&#xff0c;具有一定的参考价值&#xff0c;可以用来参考一下。感兴趣python 爬取歌曲评论的简单示例的小伙伴&#xff0c;下面一起跟随512笔记的小编罗X来看看吧。一、抓数据要想做成词云图表&#xff0c;首先得有…

c语言100位整数乘法,很大的数相乘怎么办?

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼#include&nbsp #include&nbsp using&nbsp namespace&nbsp std;int&nbsp main(int&nbsp argc,&nbsp char&nbsp *argv[]){&nbsp &nbsp&nbsp &nbsp long&nbsp i,j, c,l…

双亲委派机制_面试官:双亲委派机制的原理和作用是什么?

说到双亲委派机制&#xff0c;就必须要先要弄清楚Java的类加载器什么是类加载器Java类加载器(ClassLoader)是Java运行时环境(JRE)的一部分&#xff0c;负责动态的将Java类加载到Java虚拟机的内存空间。类加载器有哪些主要有三个&#xff1a;引导类加载器(Bootstrap ClassLoader…

c++语言程序的结构特点,C++的特点(特性)

本篇文章帮大家学习C的特点(特性)&#xff0c;包含了C的特点(特性)使用方法、操作技巧、实例演示和注意事项&#xff0c;有一定的学习价值&#xff0c;大家可以用来参考。C是面向对象的编程语言。 它提供了许多功能&#xff0c;如下所示。简单(Simple)机器独立或可移植(Portabl…

python聊天程序程序代码_python聊天程序实例代码分享

代码简单&#xff0c;直接看代码吧:代码如下:import socketimport threadingimport re#import Tkinterdef ser():ssocket.socket(socket.AF_INET,socket.SOCK_STREAM)s.bind((,33333))s.listen(1)conn,addrs.accept()while True:print [%s:%d] send a message to me: %s%(addr[…

C语言 游戏远程call调用,关于远程注入游戏并调用 call 的问题

[C#] 纯文本查看 复制代码UInt32 Codecave _Magic.AllocateMemory();uint ptr 0;try{int param1 _Magic.ReadInt((uint)(_bnsMagic.ReadInt((uint)0xDC1420) 0x30));uint ptr1 _Magic.ReadUInt((uint)0xdc1420) 0x28;uint ptr2 _Magic.ReadUInt(ptr1) 0x1c;uint ptr3 …

python有大括号吗_只有我一个人觉得Python取消了大括号而显得结构更加混乱了吗?...

这就是 Python 的特色取消了大括号后&#xff0c;Python 比较适合编写文学程序&#xff0c;进行文学编程(Literate Programming)。这样的语言当初也有&#xff0c;比如 CobolIDENTIFICATION DIVISION.PROGRAM-ID. HELLO.ENVIRONMENT DIVISION.INPUT-OUTPUT SECTION.FILE-CONTRO…

c语言单元测验,C语言程序设计单元测验一.PDF

C 语言程序设计单元测验一一、选择题 (每题2 分&#xff0c;共50 分)1、一个C 程序由若干个C 函数组成&#xff0c;各个函数在文件中的位置顺序为&#xff1a;( )A.任意 B.第一个函数必须是主函数&#xff0c;其他函数任意C.必须完全按照执行的顺序排列 D.其他函数可以任意&…

无广告的pdf阅读器_奥利给!免费无广告!功能超齐全!这样的良心国产软件,真的不多了!...

日常生活工作中&#xff0c;我们会碰到各种各样的PDF文档&#xff0c;它是一种全球通用的格式&#xff0c;由Adobe公司开发。PDF有通用性好、格式不会乱变、保真性高等优点。但同时&#xff0c;PDF也是让我们感到困惑最多的格式之一&#xff0c;因为与Word文档等其他常见办公软…

android自定义游戏闯关图,Android自定义View(四) -- Canvas

本文计划根据HenCoder系列文章进行学习&#xff0c;所以代码风格及博文素材可能会摘自其中。1 范围裁切范围裁切有两个方法&#xff1a; clipRect() 和 clipPath()。裁切方法之后的绘制代码&#xff0c;都会被限制在裁切范围内。1.1 clipRect()使用很简单&#xff0c;直接应用&…

python打印菱形星号代码_Python打印“菱形”星号代码

小计本人是一名python初学者&#xff0c;刚刚看到一道有趣的python问题&#xff0c;“用python如何在编译器中打印出菱形图案&#xff1f;”因此决定尝试一下&#xff0c;代码不多&#xff0c;仅供参考。代码def printStar(intNum): # 打印星号s "*"spaceLength in…

android tag的使用方法,Android:如何使用Html.TagHandler?

所以&#xff0c;我终于想出了自己。public class MyHtmlTagHandler implements TagHandler {public void handleTag(boolean opening, String tag, Editable output,XMLReader xmlReader) {if(tag.equalsIgnoreCase("strike") || tag.equals("s")) {proce…