Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- mondata* Search(vector<mondata*>&m, int start_index, int end_index, int datatype,string find)
- {
- int left_index = start_index;
- int right_index = end_index;
- int middle_index ;
- mondata* monster = new mondata();
- vector<mondata*>found;
- monster->merge_sort(m, 0, m.size() - 1, datatype);
- while (left_index <= right_index)
- {
- middle_index = (left_index + right_index) / 2;
- if (datatype == 1)
- {
- if (m[middle_index]->getm_data(datatype) == find)
- {
- while (true)
- {
- mondata*returndata=monster->Search(m, start_index, end_index, datatype, find);
- if (returndata == nullptr)
- break;
- found.push_back(returndata);
- }
- //cout << m[middle_index]->getm_data(0) << endl;
- return this;
- }
- else if (m[middle_index]->getm_data(datatype) > find)
- right_index = middle_index - 1;
- else
- left_index = middle_index + 1;
- }
- else
- {
- if (stoi(m[middle_index]->getm_data(datatype)) == stoi(find))
- {
- while (true)
- {
- mondata*returndata = monster->Search(m, start_index, end_index, datatype, find);
- if (returndata == nullptr)
- break;
- found.push_back(returndata);
- }
- //cout << m[middle_index]->getm_data(0) << endl;
- for (vector<mondata*>::iterator it = found.begin(); it != found.end(); ++it)
- {
- mondata* mon = (mondata*)*it;
- cout << mon->getm_id() << endl;
- }
- return this;
- }
- else if (stoi(m[middle_index]->getm_data(datatype))>stoi(find))
- right_index = middle_index - 1;
- else
- left_index = middle_index + 1;
- }
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement