Advertisement
Guest User

Untitled

a guest
Apr 19th, 2018
94
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.41 KB | None | 0 0
  1. #include <iostream>
  2.  
  3. using namespace std;
  4.  
  5. void pobierz();
  6.  
  7. template<typename T> T min_maks(T*, int, bool (*F)(T, T));
  8. template<typename T> bool mniejsze(T, T);
  9. template<typename T> bool wieksze(T, T);
  10. template<typename T> int binSearch(T*, T, int, int);
  11.  
  12. int main() {
  13. // pobierz();
  14.  
  15. int tab[] = {2, 4, 6, 8};
  16. int n = 3;
  17.  
  18. // cout << min_maks(tab, n, wieksze);
  19.  
  20. cout << binSearch(tab, 8, 0, 3);
  21. return 0;
  22. }
  23.  
  24. void pobierz() {
  25. char in = cin.get();
  26. if(in == '.')
  27. return;
  28. else {
  29. pobierz();
  30. cout << in;
  31. }
  32. }
  33.  
  34. template<typename T>
  35. T min_maks(T* typeArr, int size, bool (*F)(T, T)) {
  36. T ostatnia = *typeArr++;
  37. for(int i = 0; i < size - 1; i++) {
  38. T nastepna = *typeArr++;
  39. ostatnia = F(ostatnia, nastepna)? ostatnia : nastepna;
  40. }
  41. return ostatnia;
  42. }
  43.  
  44. template<typename T>
  45. bool mniejsze(T pierwsza, T druga) {
  46. return pierwsza < druga;
  47. }
  48.  
  49. template<typename T>
  50. bool wieksze(T pierwsza, T druga) {
  51. return pierwsza > druga;
  52. }
  53.  
  54. template<typename T>
  55. int binSearch(T* arr, T value, int begin, int end) {
  56. while(begin < end) {
  57. int center = (end - begin) / 2 + begin;
  58.  
  59.  
  60. T centerV = arr[center];
  61.  
  62. if(value < centerV)
  63. end = center-1;
  64. else if(value > centerV)
  65. begin = center+1;
  66. else
  67. return center;
  68.  
  69. }
  70. return -1;
  71. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement