目录
百战程序员,全站22050+开发课程+文档 ,学习精选优质好课快人一步!观看视频 快捷键ALT+N

Python全系列 教程

3567个小节阅读:5931k

收藏
全部开发者教程

鸿蒙应用开发

C语言快速入门

JAVA全系列 教程

面向对象的程序设计语言

Python全系列 教程

Python3.x版本,未来主流的版本

人工智能 教程

顺势而为,AI创新未来

大厂算法 教程

算法,程序员自我提升必经之路

C++ 教程

一门通用计算机编程语言

微服务 教程

目前业界流行的框架组合

web前端全系列 教程

通向WEB技术世界的钥匙

大数据全系列 教程

站在云端操控万千数据

AIGC全能工具班

A

A A

White Night

阅读(156)
赞(0)

堆排序

image-20220921175507496

堆排序(heap sort)是一种基于堆数据结构实现的高效排序算法。我们可以利用已经学过的“建堆操作”和“元素出堆操作”实现堆排序

算法思路

  1. 输入数组并建立最大堆

  2. 将堆顶元素(第1个元素)和堆底元素(最后1个元素)交换。完成交换后,堆的长度减1,已排序的元素数量为1

  3. 重新维护堆特性(down操作)

  4. 循环执行第2与3步。循环$n-1$轮后,完成数组排序

image-20240102140506434

代码

算法特性

  • 时间复杂度为 $ O(n \log n) $、非自适应排序:建堆操作使用 $ O(n) $ 时间。从堆中提取最大元素的时间复杂度为 $ O(\log n) $ ,共循环 $ n-1 $ 轮。

  • 空间复杂度为 $O(1)$、原地排序:几个指针变量使用 $ O(1) $ 空间。元素交换和堆化操作都是在原数组上进行的。

  • 非稳定排序:在交换堆顶元素和堆底元素时,相等元素的相对位置可能发生变化

实时效果反馈

1. 关于堆排序算法,说法错误的是?

A 堆排序需要移除顶元素、维护堆反复操作

B 堆排序目的就是维护堆特性

C down操作就是把数据往下移动

D 堆排序可以最大堆也可以是最小堆

答案

1=>B

Python入门

北京市昌平区回龙观镇南店村综合商业楼2楼226室

©2014-2023 百战卓越(北京)科技有限公司 All Rights Reserved.

京ICP备14032124号-2