• <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
            一個簡單的堆的實現,大根堆。
              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)  編輯 收藏 引用
            AV无码久久久久不卡网站下载| 久久亚洲春色中文字幕久久久| 久久无码一区二区三区少妇| 亚洲人成无码久久电影网站| 欧美黑人激情性久久| 色综合久久天天综合| 久久久久精品国产亚洲AV无码| 久久夜色精品国产亚洲| 污污内射久久一区二区欧美日韩 | 久久综合九色综合欧美就去吻| 精品综合久久久久久97超人 | 久久精品aⅴ无码中文字字幕重口 久久精品a亚洲国产v高清不卡 | 久久这里只有精品18| 狠狠色丁香久久婷婷综| 国内精品伊人久久久影院| 久久国产精品久久久| 色综合久久久久久久久五月| 久久精品国产只有精品66| 久久91精品国产91久久户| 少妇精品久久久一区二区三区| 日韩十八禁一区二区久久| 国内精品久久久久久中文字幕| 色偷偷888欧美精品久久久| 亚洲精品乱码久久久久久久久久久久| 久久九九久精品国产免费直播| 日本精品久久久久中文字幕8 | 日韩中文久久| 久久久久国产精品麻豆AR影院| 久久精品国产只有精品2020| 久久久精品国产sm调教网站| 无码精品久久久久久人妻中字| 中文字幕久久精品| 热久久视久久精品18| 久久久久97国产精华液好用吗| 999久久久免费国产精品播放| 91精品免费久久久久久久久| 久久成人国产精品二三区| 一级做a爰片久久毛片16| 精品国产青草久久久久福利| 久久国产精品无码网站| 亚洲?V乱码久久精品蜜桃|