• 数组指定元素查找 之 二分法查找


     1 public class ArrayExer3 {
     2     public static void main(String[] args) {
     3         //二分法查找前提:元素值是有序的
     4         int[] arr = {-54,-36,-18,0,15,36,69,109,188,333};
     5 
     6         //查找的目标元素
     7         int dest = 10;
     8 
     9         //搜索范围的首索引
    10         int head = 0;
    11         //搜索范围的尾索引
    12         int end = arr.length-1;
    13         //判断标识
    14         boolean isFlag = true;
    15         //while循环
    16         while (head <= end) {
    17             //查找范围的中间索引(偏左)
    18             int middle = (head + end)/2;
    19             //恰好相等,就找到了
    20             if (arr[middle] == dest) {
    21                 System.out.println("目标元素找到了,其索引是:" + middle);
    22                 //更改判断标识
    23                 isFlag = false;
    24                 // 目标元素找到了,用break来结束while循环
    25                 break;
    26             } else if (arr[middle]  < dest) {  // 目标索引偏大
    27                 //以(中间索引+1) 为搜索范围的首索引,来缩短查找范围
    28                 head = middle+1;
    29             } else {  //目标索引偏小
    30                 //以(中间索引-1) 为搜索范围的尾索引,来缩短查找范围
    31                 end = middle-1;
    32             }
    33         }
    34 
    35         //如果判断标识一直没变,说明目标元素没有找到
    36         if(isFlag){
    37             System.out.println("很抱歉,目标元素找不到的啦!");
    38         }
    39     }
    40 }

  • 相关阅读:
    容易混淆的JavaScript基础知识之语法部分
    CSS入门基础学习一
    HTML基础入门学习准备篇
    HTML基础入门学习
    数据结构绪论
    CSS入门基础学习二
    JavaScript学习第一篇
    CSS/CSS3常用的样式
    vs 发生异常时不能被捕获
    c# 反射
  • 原文地址:https://www.cnblogs.com/zui-ai-java/p/14195129.html
Copyright © 2020-2023  润新知