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

文章目录


排序


一、 排序的概念

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)

身体不适,未完待续

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

相关推荐
Wang's Blog11 分钟前
Java 项目实战: 交友项目 - 发布评论
java·开发语言·交友
qq_3646821540 分钟前
录音APP怎么切换语言?多语言版本如何使用
java·服务器·前端
Wang's Blog1 小时前
Java 项目实战: 交友项目 - 用户体系集成:根据环信id查询用户详情
java·lua·交友
摇滚侠1 小时前
《On Java 中文版 基础卷》阅读笔记 复用 13
java·笔记·python
揽星河..1 小时前
【初阶数据结构】常见的排序算法
数据结构·排序算法·1024程序员节
2601_968900771 小时前
玻璃深加工的工艺窗口:4 道工序的温度与时间参数边界
android·java·javascript
薛之谦_1 小时前
用 Java 实现阿里云式 IAM 子用户管理:架构设计与表结构详解
java·python·阿里云
甜到心里的蛋糕1 小时前
抖音评论自动回复机器人部署实践:无头 Chrome + DeepSeek + NapCat(2C2G 云主机)
java·jvm·chrome·python·抖音·deepseek
YLCHUP1 小时前
【模拟&STL】题解:AT_abc203_e [ABC203E] White Pawn_基础算法_数据结构_STL模板库_AtcoderABC_C++算法竞赛
数据结构·c++·算法·leetcode·动态规划·哈希算法·近邻算法
Java爱好狂.2 小时前
阿里1658页Java面试题总结(含答案)
java·后端·高并发·架构师·java面试·java面试题·java八股文