• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            posts - 183,  comments - 10,  trackbacks - 0
            一個(gè)簡單的堆的實(shí)現(xiàn),大根堆。
              1 #include <iostream>
              2 #include <ctime>
              3 using namespace std;
              4 
              5 class Heap
              6 {
              7 private:
              8     int* data;
              9     int  _size;
             10     int  _capacity;
             11 public:
             12     Heap()
             13     {
             14         _size = 0;
             15         _capacity = 2 * _size;
             16         data = new int[_capacity];
             17         if (data == 0)
             18         {
             19             exit(1);
             20         }
             21     }
             22     Heap(const Heap& h)
             23     {
             24         _size = h._size;
             25         _capacity = h._capacity;
             26         data = new int[_capacity];
             27         if (data == 0)
             28         {
             29             exit(1);
             30         }
             31         memcpy(data, h.data, sizeof (int* h._size);
             32     }
             33     Heap& operator =(const Heap& h)
             34     {
             35         delete [] data;
             36         _size = h._size;
             37         _capacity = h._capacity;
             38         data = new int[_capacity];
             39         if (data == 0)
             40         {
             41             exit(1);
             42         }
             43         memcpy(data, h.data, sizeof (int* h._size);
             44     }
             45     ~Heap()
             46     {
             47         delete [] data;
             48     }
             49     void insert(int item)
             50     {
             51         if (_size >= _capacity - 1)
             52         {
             53             _capacity = (_capacity + 1* 2;
             54             int * tmp = new int[_capacity];
             55             if (tmp == 0)
             56             {
             57                 exit(1);
             58             }
             59             // 1
             60             memcpy(tmp, data, sizeof (int* _capacity / 2 - 1);
             61             delete [] data;
             62             data = tmp;
             63         }
             64         data[++_size] = item;
             65         int pos1 = _size;
             66         int pos2 = pos1 / 2;
             67         while (pos2 >= 1 && data[pos1] > data[pos2])
             68         {
             69             data[pos1] ^= data[pos2];
             70             data[pos2] ^= data[pos1];
             71             data[pos1] ^= data[pos2];
             72             pos1 = pos2;
             73             pos2 = pos1 / 2;
             74         }
             75     }
             76     int max()
             77     {
             78         return data[1];
             79     }
             80     int erase()
             81     {
             82         int tmp = data[1];
             83         data[1= data[_size];
             84         --_size;
             85         int pos1 = 1, pos2;
             86         pos2 = pos1 * 2;
             87         
             88         while (pos2 <= _size)
             89         {
             90             if (pos2 < _size && data[pos2 + 1> data[pos2])
             91             {
             92                 ++pos2;
             93             }
             94             if (data[pos1] < data[pos2])
             95             {
             96                 data[pos1] ^= data[pos2];
             97                 data[pos2] ^= data[pos1];
             98                 data[pos1] ^= data[pos2];
             99             }
            100             pos1 = pos2;
            101             pos2 = pos1 * 2;
            102         }
            103         return tmp;
            104     }
            105     int size()
            106     {
            107         return _size;
            108     }
            109     int capacity()
            110     {
            111         return _capacity;
            112     }
            113     void test()
            114     {
            115         for (int i = 1; i <= _size; ++i)
            116         {
            117             cout << data[i] << ' ';
            118         }
            119         cout << endl;
            120     }
            121 };
            122 
            123 int main()
            124 {
            125     int n = 10;
            126     Heap h;
            127     srand(time(0));
            128     while (n--)
            129     // for (int i = 0; i < 10; ++i)
            130     {
            131         h.insert(rand());
            132         // h.insert(i);
            133         // cout << h.size() << ' ' << h.capacity() << endl;
            134     }
            135     h.test();
            136     for (int i = 0; i < 10++i)
            137     {
            138         cout << h.erase() << endl;
            139     }
            140     h.test();
            141     return 0;
            142 }
            posted on 2011-04-26 23:54 unixfy 閱讀(165) 評論(0)  編輯 收藏 引用
            99久久精品国产一区二区蜜芽| 97精品伊人久久久大香线蕉| 精品免费tv久久久久久久| 91久久国产视频| 97精品国产97久久久久久免费 | 精品国产99久久久久久麻豆| 一本一道久久综合狠狠老| 午夜不卡888久久| 久久久精品国产免大香伊| 欧美激情精品久久久久| 久久精品视频一| 韩国三级中文字幕hd久久精品| 亚洲精品NV久久久久久久久久| 成人久久精品一区二区三区| 精品久久久一二三区| 亚洲国产成人久久精品影视| 熟妇人妻久久中文字幕| 亚洲精品无码久久久久AV麻豆| 久久综合给合久久狠狠狠97色69| 久久久精品视频免费观看| 国产99精品久久| 国产亚洲美女精品久久久2020| 精品久久久久久国产免费了| 精品国产乱码久久久久久郑州公司 | 久久久久亚洲精品天堂久久久久久 | 久久婷婷久久一区二区三区| 色综合久久无码五十路人妻| 日韩久久久久中文字幕人妻| 99久久免费国产精品| 久久精品国产亚洲综合色| 久久99国内精品自在现线| 伊人久久大香线蕉亚洲| 久久狠狠爱亚洲综合影院| 欧美精品国产综合久久| 久久99国产精品久久99小说| 色8激情欧美成人久久综合电| 久久成人国产精品一区二区| 国产69精品久久久久777| 99久久婷婷国产综合精品草原 | 国产精品成人久久久久久久| 国产成人精品久久一区二区三区av |