2万+  知识点  标题检索     全文检索
       堆排序
        首先,要认真掌握堆的定义,然后才能进一步理解建堆的算法。堆的定义为:n个关键字序列k1,k2,k3,…,kn称为堆,当且仅当该序列满足如下性质(也称堆性质):①ki≤k2i且ki≤k2i+1或②ki≥k2i且ki≥k2i+1(1≤i≤n/2)。满足第①种情况的堆称为小根堆,满足第②种情况的堆称为大根堆。这里仅讨论第①种情况。
        本质上,堆排序在排序过程中,是将顺序表中存储的数据看成一棵完全二叉树,利用完全二叉树中双亲结点和孩子结点之间的内在关系来选择关键字最小记录。堆排序分建堆和堆调整两个过程。
        建堆过程为:堆排序的过程是一个不断从堆顶到叶子的调整过程(又称"筛选")。从一个无序序列建堆的过程就是一个反复筛选的过程。若将此序列看成是一个完全二叉树,则最后一个非终端结点是第n/2个元素,因此筛选只需要从第n/2个元素开始。
        堆调整过程为:将该完全二叉树中最后一个元素替代已输出的结点。若新的完全二叉树的根结点小于左右子树的根结点,则直接输出。反之,则比较左右子树根结点的大小。若左子树的根结点小于右子树的根结点(或右子树的根结点小于左子树的根结点),则将左子树(或右子树)的根结点与该完全二叉树的根结点进行交换。重复上述过程,调整左子树(或右子树),直至叶子结点,则新的二叉树满足堆的条件。
        堆排序的算法如下:
        
        堆排序算法的时间复杂度为O(nlog2n),这是一个不稳定的排序方法。
 
 相关知识点:
 
软考在线指南
优惠劵及余额
在线支付
修改密码
下载及使用
购买流程
取消订单
联系我们
关于我们
联系我们
商务合作
旗下网站群
高级资格科目
信息系统项目管理师 系统分析师
系统架构设计师 网络规划设计师
系统规划与管理师
初级资格科目
程序员 网络管理员
信息处理技术员 信息系统运行管理员
中级资格科目
系统集成项目管理工程师 网络工程师
软件设计师 信息系统监理师
信息系统管理工程师 数据库系统工程师
多媒体应用设计师 软件评测师
嵌入式系统设计师 电子商务设计师
信息安全工程师
 

本网站所有产品设计(包括造型,颜色,图案,观感,文字,产品,内容),功能及其展示形式,均已受版权或产权保护。
任何公司及个人不得以任何方式复制部分或全部,违者将依法追究责任,特此声明。
本站部分内容来自互联网或由会员上传,版权归原作者所有。如有问题,请及时联系我们。


工作时间:9:00-20:00

客服

点击这里给我发消息 点击这里给我发消息 点击这里给我发消息

商务合作

点击这里给我发消息

客服邮箱service@rkpass.cn


京B2-20210865 | 京ICP备2020040059号-5 |京公网安备 11010502032051号 | 营业执照 | Copyright ©2000-2019 All Rights Reserved 软考在线版权所有