栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

5-2 堆排序

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

5-2 堆排序

本题要求利用堆排序将数组R[]中的元素按照非递减顺序排序。

函数void Sift(int R[],int low,int high)用于调整堆结构,调整范围为节点序号为low到high.

HeapSort函数用于堆排序,将R[1]到R[n]元素进行非递减排序。

void Sift(int R[],int low,int high)
{
    int i=low,j=2*i; 
    int temp=R[i];
    while (j<=high) 
    {    
      if (j    
            R[i]=R[j];
            i=j;   
            j=2*i;
            }
        else break;                         
    }
    R[i]=temp;
    }

void HeapSort(int R[],int n)    
{
    int i,j;
    int temp;
    for (i=n/2;i>=1;i--)      
       Sift(R,i,n); 
    for (i=n;i>=2;i--)       
    {      
       swap(R[1],R[i]);  //将R[1]与R[i]进行交换。
       Sift(R,i,i-1); 
    }
}


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/968375.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号