• 基础算法5——二分查找


    View Code
     1 import java.util.*;
     2 
     3 public class BinarySearch {
     4 
     5     public static void main(String[] args) {
     6         ArrayList<Integer> a = new ArrayList<Integer>();
     7         addIntegerInSequence(a, 1, 10);
     8         print(a);
     9         int pos = binarySearch(a, 10);
    10         if (pos != -1) {
    11             System.out.print("Element found: " + pos);
    12         } else {
    13             System.out.print("Element not found");
    14         }
    15     }
    16 
    17     /**
    18      * 二分查找法
    19      * 
    20      * @param a
    21      * @param value
    22      *            待查找元素
    23      * @return
    24      */
    25     public static int binarySearch(ArrayList<Integer> a, int value) {
    26         int size = a.size();
    27         int low = 0, high = size - 1;
    28         int mid;
    29         while (low <= high) {
    30             mid = (low + high) / 2;
    31             if (a.get(mid) < value) {
    32                 low = low + 1;
    33             } else if (a.get(mid) > value) {
    34                 high = high - 1;
    35             } else {
    36                 return mid;
    37             }
    38         }
    39         return -1;
    40     }
    41 
    42     /**
    43      * 填充顺序元素到数组
    44      * 
    45      * @param a
    46      * @param begin
    47      *            开始元素
    48      * @param size
    49      *            大小
    50      */
    51     public static void addIntegerInSequence(ArrayList<Integer> a, int begin,
    52             int size) {
    53         for (int i = begin; i < begin + size; i++) {
    54             a.add(i);
    55         }
    56     }
    57 
    58     /**
    59      * 打印数组
    60      * 
    61      * @param a
    62      */
    63     public static void print(ArrayList<Integer> a) {
    64         Iterator<Integer> i = a.iterator();
    65         while (i.hasNext()) {
    66             System.out.print(i.next() + " ");
    67         }
    68         System.out.println("");
    69     }
    70 
    71 }
  • 相关阅读:
    python基础31[常用模块介绍]
    在Linux下编写Daemon
    python实例31[文件夹清理]
    GDB调试器用法
    python实例31[自动挂载虚拟盘]
    LDAP基础
    Windows上使用Linux shell
    python语法31[iterator和generator+yield]
    python类库31[logging]
    python实例26[验证用户是否存在于LDAP Server]
  • 原文地址:https://www.cnblogs.com/perfy/p/3069202.html
Copyright © 2020-2023  润新知