Guest User

Untitled

a guest
Oct 17th, 2018
102
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.45 KB | None | 0 0
  1. public int bsearch(int[] massive, int X)
  2. {
  3. // Так как массив упорядоченный то поиск можно осуществить с помощью дихотомии за O(log(massive.Length)) операций
  4.  
  5. if (massive[massive.Length - 1] >= X)
  6. /* Если самый маленький элемент массива не меньше X,
  7. то функция вернёт -1, это означает, что нет искомого элемента в данном массиве*/
  8. return -1;
  9. int firstIndex = 0;
  10. int lastIndex = massive.Length-1;
  11. int averageIndex = (firstIndex + lastIndex) / 2;
  12. while (lastIndex - firstIndex > 0)
  13. {
  14. if (X > massive[averageIndex])
  15. {
  16. if (averageIndex - 1 >= 0 && massive[averageIndex - 1] == X)
  17. return averageIndex;
  18. lastIndex = averageIndex;
  19. }
  20. else
  21. {
  22. if (averageIndex + 1 < massive.Length && X == massive[averageIndex] && X > massive[averageIndex + 1])
  23. return averageIndex + 1;
  24. firstIndex = averageIndex + 1;
  25. }
  26. averageIndex = (firstIndex + lastIndex) / 2;
  27. }
  28. return averageIndex;
  29. }
Add Comment
Please, Sign In to add comment