利用二分法查找一个数字在数组中的位置

匿名 (未验证) 提交于 2019-12-03 00:20:01

问题:有一个升序排列无重复数字的数据,以及一个数字,利用二分法查找数字在数组中的位置,找到则返回其位置号,没找到返回-1.

解答:

通过两种方式实现:第一种方式为递归实现,需要传递数组的头和尾的位置。

  1. publicclass
  2. /**
  3. publicstaticintintintintint
  4. ifnullreturn1
  5. int2
  6. "中间值:"
  7. if
  8. if
  9. return1
  10. elseif
  11. return
  12. else
  13. return
  14. elseif
  15. return
  16. else
  17. return1
  18. /**
  19. publicstaticvoid
  20. int1,3,4,5,6,7,11,46,255,743,888
  21. int11,1,11

第二种实现方式为非递归实现,则利用循环:
  1. publicclass
  2. publicstaticintintint
  3. ifnullreturn1
  4. int2
  5. if
  6. return1
  7. int0//数组下标
  8. int1//数组下标
  9. while
  10. 2
  11. if
  12. elseif
  13. else
  14. return1
  15. return1
  16. /**
  17. publicstaticvoid
  18. int1,3,4,5,6,7,11,46,255,743,888
  19. int5
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!