惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Y
Y Combinator Blog
腾讯CDC
Recent Announcements
Recent Announcements
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
Hugging Face - Blog
Hugging Face - Blog
H
Help Net Security
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
Last Week in AI
Last Week in AI
博客园_首页
D
DataBreaches.Net
P
Proofpoint News Feed
云风的 BLOG
云风的 BLOG
V
Visual Studio Blog
月光博客
月光博客
Jina AI
Jina AI
Stack Overflow Blog
Stack Overflow Blog
酷 壳 – CoolShell
酷 壳 – CoolShell
博客园 - 【当耐特】
Vercel News
Vercel News
WordPress大学
WordPress大学
J
Java Code Geeks
博客园 - 聂微东
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
U
Unit 42

博客园 - LeeXiaoLiang

自己写的一个javascript下拉列表类 jquery1.5.1根据元素ID获取元素对象 jquery向.ashx文件post中文乱码问题的解决 【转】通过在RowDataBound事件中把行索引绑定到控件的CommandArgument,然后在RowCommand事件中取出 - LeeXiaoLiang - 博客园 【转】GridView的RowCommand事件中取得行索引 - LeeXiaoLiang - 博客园 【转】GridView 实现服务器端和客户端全选的两种方法 ASP.NET之GridView数据绑定 - LeeXiaoLiang - 博客园 希尔排序的C语言实现(2) 希尔排序的C语言实现(1) 简单插入排序的C语言实现 堆排序的C语言实现 【转】sqlserver中分页方法集锦 【转】高效的MySQL分页 【摘】完全二叉树 【原创】连接字符串数组 【摘】用C实现将数组转换为字符串 【原创】用C实现Trim()函数 - LeeXiaoLiang - 博客园 【转】浅谈数据库设计技巧 [转]数据库设计范式的理解
对于堆排序算法的理解
LeeXiaoLiang · 2010-08-11 · via 博客园 - LeeXiaoLiang

Q1.为什么HeapSort在创建初始堆时循环的索引是从n/2开始的
A1.因为堆排序的数据存储结构是数组:
    若数组的索引从1开始,则若数组元素的个数为n,则以最后一个元素为左子节点的父节点的索引为n/2;依次类推,则以倒数第二个元素为左子节点的父元素的索引为n/2-1,...n/2-n/2-1;

    若数组的索引从0开始,则若数组元素的个数为n,则以最后一个元素为左子节点的父节点的索引为n/2-1;依次类推,则以倒数第二个元素为左子节点的父元素的索引为n/2-2,...n/2-n/2;

    若下标从1开始,则最后一个非叶子节点的索引为n/2(可通过绘制树形结构图来理解)。

    创建初始堆就是通过遍历所有非叶子节点,把数组中的最大值调整到树根的位置,即把数组建成最大堆。
Q2.堆调整函数的理解?
A2.将指定根节点(父节点)的子树中的最大值调整到子树根节点的位置。

http://caterpillar.onlyfun.net/Gossip/AlgorithmGossip/HeapSort.htm