• 堆排序的基本实现


     1 class Heap{
     2 private:
     3     int m[1000];
     4     int size;
     5 public:
     6     Heap(int s) :size(s){}
     7     Heap(int *num, int s) :size(s){ 
     8         for (int i = 0; i < size; i++)
     9             m[i] = num[i]; 
    10 
    11     }
    12     int parent(int i)
    13     {
    14         return i / 2;
    15     }
    16     int left(int i)
    17     {
    18         return i * 2 + 1;
    19     }
    20     int right(int i)
    21     {
    22         return i * 2 + 2;
    23     }
    24     void Heapify(int i)
    25     {
    26         int mx = i;
    27         int l = left(i);
    28         int r = right(i);
    29         if (l<size && m[l] > m[mx])
    30             mx = l;
    31         if (r<size && m[r] > m[mx])
    32             mx = r;
    33         if (i != mx){
    34             swap(m[mx], m[i]);
    35             Heapify(mx);
    36         }
    37     }
    38 
    39     void BuildHeap()
    40     {
    41         for (int i = size / 2; i >= 0; i--)
    42             Heapify(i);
    43     }
    44 
    45     void HeapSort()
    46     {
    47         cout << "Hello" << endl;
    48         cout << size << endl;
    49         while (size > 1)
    50         {
    51             cout << "Sorting_out:" << m[0] << endl;
    52             swap(m[0], m[size - 1]);
    53             size--;
    54             Heapify(0);
    55         }
    56     }
    57     int get(int i)
    58     {
    59         return m[i];
    60     }
    61 
    62 
    63 };
  • 相关阅读:
    POJ3764 The xorlongest Path
    POJ1733 Parity game
    POJ3301 Texas Trip
    POJ2135 Farm Tour
    POJ2516 Minimum Cost
    Mem478
    PROJECTEULER48
    POJ1201 Intervals
    CSS 伪元素 (Pseudoelements)
    JQuery显示隐藏层
  • 原文地址:https://www.cnblogs.com/xlert/p/3960426.html
Copyright © 2020-2023  润新知