这个文章旨在存代码,看了很多网上写推排序的算法,感觉写的过于臃肿,我去努力地理解了思想,自己写的,有什么问题欢迎指正。

首先是升序排序,这个要建小顶堆,Java代码如下:

public <T extends Comparable<? super T>> void sortByAsc(T[] data) {heapSortByAsc(data,data.length);}private <T extends Comparable<? super T>> void heapSortByAsc(T[] data, int length) {if(length == 0)return;//建堆for(int i = length/2 -1 ; i >= 0;i--){if(data[i].compareTo(data[2 * i]) < 0 ){swap(data,i,2*i);}if(data[i].compareTo(data[ 2*i + 1]) < 0){swap(data,i,2*i+1);}}//将堆最后一个跟根节点交换swap(data,0,length -1);//递归heapSortByAsc(data,length - 1);}

  下面的是降序排序,需要建大顶堆:

public <T extends Comparable<? super T>> void sortByDesc(T[] data) {heapSortByDesc(data,data.length);}private <T extends Comparable<? super T>> void heapSortByDesc(T[] data, int length) {if(length == 0)return;//建堆for(int i = length/2 -1 ; i >= 0;i--){if(data[i].compareTo(data[2 * i]) > 0 ){swap(data,i,2*i);}if(data[i].compareTo(data[ 2*i + 1]) > 0){swap(data,i,2*i+1);}}//将堆最后一个跟根节点交换swap(data,0,length -1);//递归heapSortByAsc(data,length - 1);}

  最后是交换的程序,很简单;

public <T extends Comparable<? super T>> void swap(T[] data, int i, int j) {  T temp = data[i];data[i] = data[j];data[j] = temp; }

  

转载于:https://www.cnblogs.com/Gabby/p/6522834.html

数据结构之排序算法Java实现(2)——选择类排序之堆排序算法相关推荐

  1. 排序四| 选择类排序(java实现)

    选择类排序 选择排序的基本思想是:每一趟从 n-i+1 (i=1,2,-,n)个元素中选取一个关键字最小的元素作为有序序列中第 i 个元素.本节在介绍简单选择排序的基础上,给出了对其进行改进的算法-- ...

  2. 排序-选择类排序--堆排序简介

    参考:数据结构(严蔚敏) 选择类排序有两个经典算法,一个是之前总结过的直接选择排序,另一个则是今天要讲的堆排序 0.什么是堆 对于Java中的一个数组Array,如果对于其中所有的元素其下标index ...

  3. 排序算法(二)—— 选择法排序算法

    1.选择法排序简介 选择法排序算法是一种常用的排序算法,他的实现方法是遍历数组所有元素,找出最小的元素,将它与第一个元素交换:然后遍历剩下的元素,找出最小的元素并与第二个元素交换:接下来再遍历剩下的元 ...

  4. java堆算法,Java 基本功04-JVM-Java堆详解和GC算法

    JVM GC 机制 1. 在此之前需要了解相关概念: 1.1 Java 堆内存: 在 HotSpot JVM 实现中 Heap 内存被"分代"管理. JVM 的内存首先被分割成两部 ...

  5. l bfgs算法java代码_数值优化:理解L-BFGS算法

    译自<Numerical Optimization: Understanding L-BFGS>,本来只想作为学习CRF的补充材料,读完后发现收获很多,把许多以前零散的知识点都串起来了.对 ...

  6. list快速默认排序java_1. java Collections.sort()实现List排序的默认方法和自定义方法...

    1.java提供的默认list排序方法 主要代码: List list = new ArrayList();list.add("刘媛媛"); list.add("王硕&q ...

  7. tsp问题用蚁群算法java实现_TSP解决之道——蚁群算法

    参考 蚁群算法原理与应用1-自然计算与群体智能 简介 1.蚁群算法(Ant Clony Optimization,ACO)是一种群智能算法,它是由一群无智能或有轻微智能的个体(Agent)通过相互协作 ...

  8. java基础----数据结构与算法----Java API:集合 以及 排序相关API

    概述: 基本数据结构与算法在jdk中都有相应的API 数组+java.util.Arrays java中的集合类 Collection-->List+Set-->接口的实现类 Map   ...

  9. java代码隐藏面消除算法,java常面的几种排序算法

    冒泡排序 1.算法步骤: 1)比较相邻的元素.如果第一个比第二个大,就交换他们两个. 2)对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对.这步做完后,最后的元素会是最大的数. 3)针对所有 ...

最新文章

  1. Java项目:企业员工绩效工资管理系统(java+SpringBoot+FreeMarker+Mysql)
  2. 口袋无人机DOBBY:我的“人脸识别”已上线
  3. ADT,Eclipse启动时在Android SDK Content Loader0%无法编译
  4. Eclipse中propedit插件安装(解决property中文问题)
  5. webpack前言:前端模块系统的演进
  6. pr导入html文件,视频怎么导入Premiere啊?
  7. 开发C语言的3款神器,VS2019、VScode和IntelliJ Clion
  8. python批量处理txt_浅谈Python批处理文件夹中的txt文件
  9. 如何在excel中判断某一点在某一区域内_SEM优化师常用的Excel表格函数集合
  10. java 发送tcp_Java TCP发送与接收
  11. RHCS 测试过程(含GFS2),未完待续!
  12. SAP ABAP开发视频学习(视频教程)
  13. Sloth 实战(二)之远程对象
  14. bzoj1864 [Zjoi2006]三色二叉树
  15. Arduino - 改造楼道门禁,使用密码开门
  16. 【ROOT from CERN】——TSpectrum2类与二维寻峰
  17. 为学日益,为道日损。损之又损,以至于无为。
  18. 厂长来了 | 从个人英雄到软件工程,我们经历了什么
  19. osg自定义操作器实现视图缩放
  20. 如何开启公众号的留言功能?这里有开通流程,赶紧收藏

热门文章

  1. ubuntu Django mysqlclient的问题
  2. python爬虫模拟点击下拉菜单和_python+selenium爬虫过程中的模拟点击问题
  3. Ansible(五)远程创建用户并对密码进行加密设置
  4. python能不能在win10系统中使用_python在win10下可以用吗
  5. Sushiswap团队开发者:Sushi在Q1实现400亿美元的交易量,xSUSHI持有者获得2000万美元费用
  6. 今日恐慌与贪婪指数为54 等级由贪婪转为中立
  7. Bots Inc宣布订购1000台比特币矿机,价值400万美元
  8. SAP License:BCS进阶第五篇-BCS合并现金流量表的实现
  9. MVC @RenderBody、@RenderSection、@RenderPage、@Html.RenderPartial、@Html.RenderAction
  10. 又到开学季 学习神器走一波 物联网开发板