• <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 閱讀(158) 評(píng)論(0)  編輯 收藏 引用

            只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。
            網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


            99久久99久久精品国产片果冻| 天天做夜夜做久久做狠狠| 久久中文字幕精品| 99久久综合国产精品免费| 麻豆一区二区99久久久久| 色综合久久久久无码专区| 精品久久久久久无码专区| 久久亚洲国产午夜精品理论片| 丁香久久婷婷国产午夜视频| 色综合合久久天天给综看| 国产情侣久久久久aⅴ免费| 久久青青草原精品国产不卡| 一本久久知道综合久久| 亚洲一区中文字幕久久| 中文字幕无码免费久久| 国产日韩久久久精品影院首页| 久久久久久精品久久久久| 亚洲国产成人久久精品影视 | 久久久无码精品亚洲日韩京东传媒 | 久久无码一区二区三区少妇| 亚洲中文字幕无码久久2020| 久久精品成人免费国产片小草| 欧美熟妇另类久久久久久不卡| 久久九九久精品国产| 91精品国产综合久久精品| 久久无码中文字幕东京热| 欧美粉嫩小泬久久久久久久 | 精品多毛少妇人妻AV免费久久| 久久精品国产亚洲7777| 老司机国内精品久久久久| 亚洲午夜久久久影院| 久久99久久99精品免视看动漫| 久久久久国产亚洲AV麻豆| 亚洲一区中文字幕久久| 国产—久久香蕉国产线看观看 | 亚洲午夜福利精品久久| 开心久久婷婷综合中文字幕| 久久久久婷婷| 日本加勒比久久精品| 午夜精品久久久久久影视riav| 久久国产高清一区二区三区|