排序:堆排序(未完待续)

文章目录


排序


一、 排序的概念

1.排序:

  • 一组数据按递增/递减排序

2.稳定性:

  • 待排序的序列中,存在多个相同的关键字,拍完序后,相对次序保持不变,就是稳定的

3.内部排序:

  • 数据元素全部放在内存中的排序

4.外部排序:

  • 数据元素太多不能同时放在内存中,根据排序过程的要求不能在内外存之间移动数据的排序

二、插入排序

1.直接插入排序

二、插入排序

堆排序

  • 时间复杂度: O( N * log N)
  • 空间复杂的:O (1)
  • 升序:建大堆

  • 降序:建小堆

将一组数据从小到大排序 ------> 建立大根堆

为什么不用小根堆:小根堆只能保证,根比左右小,不能保证左右孩子的大小顺序,并且要求对数组本身进行排序

  • 大根堆,保证堆顶元素是最大值,最大值跟最后一个元素交换,将最大的放在最后,usedSize--;
  • 向下调整:调整0下标的树,维护大根堆,最大值继续交换到最后一个有效元素的位置
  • 从后往前,从大到小依次排列,保证在原来数组本身进行排序
java 复制代码
    /**
     * 堆排序
     * 时间复杂度: N*logN
     * 空间复杂的:o(1)
     */
    public void heapSort() {
        int end = usedSize - 1;//最后一个有效元素
        while (end > 0) {//直到end等于0
            swap(elem, 0, end);//交换end位置和堆顶位置元素
            shiftDown(0, end);//向下调整
            end--;
        }
    }
  • 时间复杂度: O( N * log N)
  • 空间复杂的:O (1)

身体不适,未完待续

点击移步博客主页,欢迎光临~

相关推荐
liangbo7几秒前
JVM规范第 2章:从 class 文件到运行时数据区
java·jvm
吴声子夜歌11 分钟前
Java面试——Flink原理及应用(二)
java·面试·flink
深念Y19 分钟前
数据库层设计的取舍:ORM 便利性与手写 SQL 的安全性权衡
java·数据库·sql·golang·框架·语言·ome
lzx_00220 分钟前
list(全)
数据结构·list
小江的记录本21 分钟前
【ORM 框架】MyBatis-Plus 核心特性、条件构造器、分页插件、乐观锁插件(附《思维导图》、《问题排查与实践清单》和《面试高频考点汇总》)
java·windows·spring boot·python·spring·面试·mybatis
clorinda23 分钟前
SQL 快速入门:题目单知识点精炼总结
java·数据库·sql
AI人工智能+电脑小能手32 分钟前
大白话说Java设计模式-40-备忘录模式(业务实战篇)
java·设计模式·事务回滚·备忘录模式·状态保存·spring transactional·购物车快照
SimonKing33 分钟前
白嫖国产多模态大模型:商汤 SenseNova 接入指南
java·后端·程序员
小江的记录本33 分钟前
【ORM框架】MyBatis核心原理、ORM思想、MyBatis vs JPA
java·数据库·后端·spring·spring cloud·oracle·mybatis
_明月1 小时前
汇川技术股份有限公司面试--Java外包岗
java·面试·职场和发展