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

    //堆排序---大根堆
    //此过程只排出第一个大根堆
    void HeapAdjust(int data[],int s,int m)
    {
        //data[s..m]组成的元素序列中,除data[s]之外,其余元素均满足堆定义
        //调整data[s]的位置,使之成为大根堆
        int j,t;
        t = data[s];                                //备份元素data[s],找到合适的位置后再插入
        for (j=2*s+1;j<m;j=j*2+1)                    //沿值较大的孩子节点往下筛选
        {
            if(j<m && data[j]<data[j+1])            //j是较大的元素的下标
                ++j;
            if(!(t<data[j]))
                break;    
            data[s] = data[j];
            s = j;
        }
        data[s] = t;
    }
    //用堆排序对整形数组进行非递减排序
    //对n个数组元素进行排序
    void HeapSort(int data[],int n)    
    {
        int i;
        int t;
        for(i=n/2-1;i>=0;--i)                        //把data调整成大根堆
            HeapAdjust(data,i,n-1);
        for (i=n-1;i>0;--i)
        { 
            t = data[0];
            data[0] = data[i];
            data[i] = t;                            //堆顶元素data[0]与序列的最后元素data[i]交换
            HeapAdjust(data,0,i-1);                    //带排元素个数减一,将data[0...i-1]调整为大根堆
        }
    }
    View Code
  • 相关阅读:
    Git的环境搭建
    AmazeUI HTML元素
    AmazeUI布局
    AmazeUI基本样式
    Bash简介
    Linux下拷贝目录和删除
    linux下的定时任务
    缓存
    隔离
    DEDECMS使用SQL命令批量替换语句
  • 原文地址:https://www.cnblogs.com/jeromesunny/p/3209108.html
Copyright © 2011-2022 走看看