zoukankan      html  css  js  c++  java
  • 堆排序

    1、堆定义:堆就是左右孩子小于或者大于父节点  

    2、排序思想:

    堆排序使用一种称为“筛”的运算进行节点数据的调整,直到使节点最后满足堆的条件。

    已调整A[i]

    1) q

    通常堆是通过一维数组来实现的。在起始数组为 0 的情形中:

    • 父节点i的左子节点在位置 (2*i+1);
    • 父节点i的右子节点在位置 (2*i+2);
    • 子节点i的父节点在位置 floor((i-1)/2);
    #include <cstdlib>
    #include <iostream>
    /**
     0 1 2 3 4 5 6
     子树的索引 j = 2*i+1 
                      0
                  1___|____2
                3_|_4    5_|_6
    */ 
    using namespace std;
    void HeapAdjust(int a[],int s,int n)
    {
    int j ,t;
    while(2*s+1<n){//第s个节点有左子树 
                  
                   //让 j 指向子树中较大的一个 
                   j= 2*s+1;
                   if((j+1)<n){//有右子树 
                               if(a[j]<a[j+1])//右子树比较大
                               j++;
                               }
                   //交换             
                   if(a[s]<a[j])
                   {
                   t = a[s];
                   a[s] = a[j];
                   a[j] = t;
                   s = j;             
                   }
                   else//不需要调整了 
                   break; 
                   
                   }     
    } 
    
    void HeapSort(int a[],int n)
    {
         int t,i,j;
         for(i = n/2-1;i>=0;i--)//从最末级开始调整  
         HeapAdjust(a,i,n);//建堆
         
         for(i = n-1;i>=0;i--)
         {
         t = a[0];
         a[0] = a[i];
         a[i] = t;
         HeapAdjust(a,0,i);           
         } 
         
         
    } 
    int main(int argc, char *argv[])
    {
        int a[] = {1,6,2,77,4,99,5};
        HeapSort(a,7);
        for(int i =0;i<7;i++){
                cout<<a[i]<<"   ";
                } 
                cout<<endl;
        system("PAUSE");
        return EXIT_SUCCESS;
    }
    


     

  • 相关阅读:
    免费报表工具 积木报表(JiMuReport)的安装
    jeecgboot积木报表(jimuReport)SQL Server切换
    Machine Learning目录
    Pytorch05_torch安装(GPU版)
    Pytorch04_RNN结构
    Pytorch03_张量变化
    Pytorch02_GPU加速
    Pytorch01_通用结构
    怎么将本地文件上传到远程git仓库
    SpringCloud-微服务架构编码构建
  • 原文地址:https://www.cnblogs.com/snake-hand/p/3190030.html
Copyright © 2011-2022 走看看