51 return int(array.size());
68 return HeapData(argV, 0,
getSize()-1);
72 std::vector<TYPE *> array;
75 int Compare(TYPE *a, TYPE *b) {
76 if(*a < *b)
return -1;
81 int HeapData(TYPE *argData,
int argS,
int argE) {
89 array.insert(array.begin(), pData);
90 id.insert(
id.begin(), 1);
95 comp = Compare(argData, array[_fk_h_s(argS)]);
97 return id[_fk_h_s(argS)];
103 array.insert(array.begin()+argS, pData);
104 id.insert(
id.begin()+argS,
107 array.insert(array.begin()+argS+1, pData);
108 id.insert(
id.begin()+argS+1,
111 return int(array.size());
114 if(argE - argS == 1) {
115 comp = Compare(argData,
116 array[_fk_h_s(argS)]);
119 return id[_fk_h_s(argS)];
125 array.insert(array.begin()+argS, pData);
126 id.insert(
id.begin()+argS,
128 return int(array.size());
131 return HeapData(argData, argE, argE);
134 index = (argE-argS)/2 + argS;
136 comp = Compare(argData, array[_fk_h_s(index)]);
139 return id[_fk_h_s(index)];
143 return HeapData(argData, argS, index);
147 return HeapData(argData, index, argE);