飞道的博客

Java零基础进阶篇之数组|数组的查找

256人阅读  评论(0)

本篇文章讲解的知识点主要围绕数组,废话不多说,只分享Java相关的干货!

二分法(折半法)查找

查找数组中的元素我们可以遍历数组中的所有元素,这种方式称为线性查找。线性查找适合与

小型数组,大型数组效率太低。如果一个数组已经排好序,那么我们可以采用效率比较高的二

分查找或叫折半查找算法。

见示例

假设,我们准备采用二分法取得 18 在数组中的位置

  • 第一步,首先取得数组 0~9 的中间元素

中间元素的位置为:(开始下标 0 + 结束下标 9/2=下标 4

通过下标 4 取得对应的值 15

18 大于 15,那么我们在后半部分查找

  • 第二步,取数组 4~9 的中间元素

4~9 的中间元素=(下标 4 + 1 +下标 9/2=下标 7

下标 7 的值为 18,查找完毕,将下标 7 返回即可

以上就是二分或折半查找法,此种方法必须保证数组事先是排好序的,这一点一定要注意

【示例代码】


   
  1. public class BinarySearchTest01 {
  2. public static void main(String[] args) {
  3. int[] data = { 11, 12, 13, 14, 15, 16, 17, 18, 19, 20};
  4. int index = binarySearch(data, 18);
  5. System.out.println(index);
  6. }
  7. //采用折半法查询,必须建立在排序的基础上
  8. private static int binarySearch(int[] data, int value) {
  9. //开始下标
  10. int beginPos = 0;
  11. //结束下标
  12. int endPos = data.length - 1;
  13. while (beginPos <=endPos) {
  14. int midPos = (beginPos + endPos)/ 2;
  15. if (value == data[midPos]) {
  16. return midPos;
  17. } else if (value > data[midPos])
  18. { beginPos = midPos + 1;
  19. } else if (value < data[midPos])
  20. { endPos = midPos - 1;
  21. }
  22. }
  23. return - 1;
  24. }
  25. }

以上就是数组相关的知识点了,配套视频教程👇,正在学习Java的同学们一定要持续关注哦~~

Java零基础进阶视频教程

 


转载:https://blog.csdn.net/bjpowernode_com/article/details/112357449
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场