博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
八大排序之堆排序
阅读量:5129 次
发布时间:2019-06-13

本文共 977 字,大约阅读时间需要 3 分钟。

一、堆排序的 JAVA 实现

   堆排序:是一种树形选择排序,在排序中,将待排序的记录r[1..n]看成是一颗完全二叉树的顺序存储结构,利用完全二叉树中双亲结点和孩子结点之间的内在关系,在当前无序中选择关键字最大(或最小)的记录。

  下面直接代码实现

package HeapSort;public class HeapingSort {    public void HeapSort(int a[]){        CreapHeap(a);        for (int i=a.length-1;i>0;--i){            a[0]=a[1];            a[1]=a[i];            a[i]=a[0];            HeapAdjust(a,1,i-1);        }        for (int i=1;i
=a[i]) //比较mid 和 上次比较得到的最大值,若是满足,则就是堆 ,直接结束循环。若是不满足,则进行交换。 break; a[mid]=a[i]; mid=i; } a[mid]=hc; } public void CreapHeap(int a[]){ for (int i=(a.length-1)/2;i>0;--i){ //调整堆, HeapAdjust(a,i,a.length-1); } } public static void main(String[] args) { int[] a=new int[]{
0,38,65,97,76,13,27,49}; new HeapingSort().HeapSort(a); }

3、算法分析:

a、时间复杂度:O(nlog2n)
b、空间复杂度:O(1)
4、算法特点
a、是不稳定的排序
b、只能用于顺序结构,不能用于链式

 

转载于:https://www.cnblogs.com/jxp0112/p/10786353.html

你可能感兴趣的文章
background-clip,background-origin
查看>>
Android 高级UI设计笔记12:ImageSwitcher图片切换器
查看>>
【Linux】ping命令详解
查看>>
对团队成员公开感谢博客
查看>>
java学习第三天
查看>>
python目录
查看>>
django+uwsgi+nginx+sqlite3部署+screen
查看>>
Andriod小型管理系统(Activity,SQLite库操作,ListView操作)(源代码下载)
查看>>
在Server上得到数据组装成HTML后导出到Excel。两种方法。
查看>>
浅谈项目需求变更管理
查看>>
经典算法系列一-快速排序
查看>>
设置java web工程中默认访问首页的几种方式
查看>>
ASP.NET MVC 拓展ViewResult实现word文档下载
查看>>
8、RDD持久化
查看>>
第二次团队冲刺--2
查看>>
VMware Tools安装
查看>>
Linux上架设boost的安装及配置过程
查看>>
[转载]加密算法库Crypto——nodejs中间件系列
查看>>
使用Xshell密钥认证机制远程登录Linux
查看>>
OpenCV之响应鼠标(三):响应鼠标信息
查看>>