zoukankan      html  css  js  c++  java
  • 堆排序C语言

    #include <stdio.h>

    /*遍历*/
    void tranvase(int * arr, int len){
        int i;
        for(i=1; i<=len; i++){
            printf("%d、", arr[i]);
        }
        printf("\n");
    }

    /*调整堆*/
    void tiaozhengdui(int * arr, int root, int end){ //root 为根坐标 end为最后元素坐标
        int j;
        j = 2*root; //root的左子树
        int temp = arr[root]; //临时保存根节点值
        /*比较左子树值和右子树值*/
        if((j+1)<=end && arr[j]<arr[j+1]){
            j=j+1;
        }
        //j 指向子树最大值的位置
        // 继续比较 该最大值 和 它的 子树值进行比较
        while(j<=end){
            if(temp<arr[j]){ //根节点值<子树最大值  互换值
                    arr[root] = arr[j];
                    root = j;
                    j = 2*j;
                     /*比较左子树值和右子树值*/
                    if((j+1)<=end && arr[j]<arr[j+1]){
                        j=j+1;
                    }
            }else{
                j = end+1; //退出
            }
        }
        arr[root] = temp;
    }

    /*堆排序*/
    void stackSort(int * arr, int len){
            int i,j,temp;
            //初始化堆
            for(i=len/2; i>=1; i--){
                tiaozhengdui(arr, i, len);
            }

            /*换根和最后元素的值*/
            for(j=len; j>=2; j--){
                 temp = arr[1]; //临时存储根节点最大值
                 arr[1] = arr[len]; //根节点保存最后一个结点的值
                 arr[len]=temp; //最后一个结点保存最大值
                 len = len-1;
                 tiaozhengdui(arr, 1, len); //继续调整堆
        }
    }

    int main(){
        int arr[10] = { 0, 12, 1, 33, 23, 23, 4, 2, 445, 2};
        tranvase(arr, 9);
        stackSort(arr, 9);
        tranvase(arr, 9);
        return 0;
    }

  • 相关阅读:
    关于android中两种service的编写简单总结
    To learn list
    android中如何在系统启动的时候启动自己的service
    service的生命周期以及两种service的差异
    Intent的简单概述
    关于startactivity初始化activity的过程以及activity和window以及view的关系
    android activity生命周期的一张经典图片
    关于Android进程的启动和消亡
    Java基础学习总结(73)——Java最新面试题汇总
    Beetl学习总结(4)——Web集成
  • 原文地址:https://www.cnblogs.com/qintangtao/p/2758019.html
Copyright © 2011-2022 走看看