Advertisement
Guest User

Untitled

a guest
Jul 26th, 2017
68
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.67 KB | None | 0 0
  1. mondata* Search(vector<mondata*>&m, int start_index, int end_index, int datatype,string find)
  2. {
  3. int left_index = start_index;
  4. int right_index = end_index;
  5. int middle_index ;
  6. mondata* monster = new mondata();
  7. vector<mondata*>found;
  8. monster->merge_sort(m, 0, m.size() - 1, datatype);
  9.  
  10. while (left_index <= right_index)
  11. {
  12. middle_index = (left_index + right_index) / 2;
  13. if (datatype == 1)
  14. {
  15. if (m[middle_index]->getm_data(datatype) == find)
  16. {
  17. while (true)
  18. {
  19. mondata*returndata=monster->Search(m, start_index, end_index, datatype, find);
  20. if (returndata == nullptr)
  21. break;
  22. found.push_back(returndata);
  23. }
  24. //cout << m[middle_index]->getm_data(0) << endl;
  25. return this;
  26. }
  27. else if (m[middle_index]->getm_data(datatype) > find)
  28. right_index = middle_index - 1;
  29. else
  30. left_index = middle_index + 1;
  31. }
  32. else
  33. {
  34. if (stoi(m[middle_index]->getm_data(datatype)) == stoi(find))
  35. {
  36. while (true)
  37. {
  38. mondata*returndata = monster->Search(m, start_index, end_index, datatype, find);
  39. if (returndata == nullptr)
  40. break;
  41. found.push_back(returndata);
  42. }
  43. //cout << m[middle_index]->getm_data(0) << endl;
  44. for (vector<mondata*>::iterator it = found.begin(); it != found.end(); ++it)
  45. {
  46. mondata* mon = (mondata*)*it;
  47. cout << mon->getm_id() << endl;
  48. }
  49. return this;
  50. }
  51. else if (stoi(m[middle_index]->getm_data(datatype))>stoi(find))
  52. right_index = middle_index - 1;
  53. else
  54. left_index = middle_index + 1;
  55. }
  56. }
  57.  
  58. return 0;
  59. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement