zoukankan      html  css  js  c++  java
  • 算法笔记 --- Heap Sort

    #include <iostream>
    
    using namespace std;
    
    class HeapSort {
    public:
        int* heapSort(int* A, int n) {
    
            buildMaxHeap(A, n);
            int tmp;
            for(int i = n-1; i >0; i--){
                tmp = A[0];
                A[0] = A[i];
                A[i] = tmp;
                adjustMaxHeap(A, 0, i);
            }
            return A;
        }
        void adjustMaxHeap(int* A, int index_node, int size){
            int var_max = index_node;
            int left_child = index_node*2+1;
            int right_child = index_node*2+2;
            int tmp;
            // cout<<"left_child: "<<left_child<<endl;
            // cout<<"right_child: "<<right_child<<endl;
            // cout<<"var_max: "<<var_max<<endl;
            if(A[left_child] > A[var_max] && left_child < size){
                var_max = left_child;
            }
            if(A[right_child] > A[var_max] && right_child < size){
                var_max = right_child;
            }
            if(var_max != index_node){
                tmp = A[index_node];
                A[index_node] = A[var_max];
                A[var_max] = tmp;
                
                adjustMaxHeap(A, var_max, size);
            }
        }
        void buildMaxHeap(int* A, int size){
            for(int i = (size/2-1); i >= 0; i--){
                // cout<<"i: "<<i<<endl;
                adjustMaxHeap(A, i, size);
            }
        }
    };
    
    int main()
    {
       int a[6] = {1,5,2,3,2,3};
       HeapSort sorter;
       int* res = sorter.heapSort(a, 6);
       cout<<"result: "<<endl;
      for(int i = 0; i < 6; i++){
          cout<<res[i]<<" ";
      }
      cout<<endl;
       return 0;
    }
  • 相关阅读:
    oracle对象之序列
    PLSql工具介绍
    oracle对象之同义词
    oracle对象之视图
    缓存问题汇总
    消息队列问题汇总
    算法-排序算法-1
    redis-主从数据一致
    数据结构与算法-完全二叉树/满二叉树
    写缓冲器与无效化队列
  • 原文地址:https://www.cnblogs.com/zhongzhiqiang/p/5791083.html
Copyright © 2011-2022 走看看