• 算法(二):查找


    一 、 线性查找(顺序查找)

    public class LSearch {
    public static int[] Data = { 12, 76, 29, 22, 15, 62, 29, 58, 35, 67,
    58, 33, 28, 89, 90, 28, 64, 48, 20, 77 }; // 输入数据数组

    public static int Counter = 1; // 查找次数计数变量

    public static void main(String args[]) {

    int KeyValue = 22;
    // 调用线性查找
    if (Linear_Search((int) KeyValue)) {
    // 输出查找次数
    System.out.println("");
    System.out.println("Search Time = " + (int) Counter);
    } else {
    // 输出没有找到数据
    System.out.println("");
    System.out.println("No Found!!");
    }
    }

    // ---------------------------------------------------
    // 顺序查找
    // ---------------------------------------------------
    public static boolean Linear_Search(int Key) {
    int i; // 数据索引计数变量

    for (i = 0; i < 20; i++) {
    // 输出数据
    System.out.print("[" + (int) Data[i] + "]");
    // 查找到数据时
    if ((int) Key == (int) Data[i])
    return true; // 传回true
    Counter++; // 计数器递增
    }
    return false; // 传回false
    }
    }

    二 、二分查找折半查找

    public class BSearch {
    public static int Max = 20;
    public static int[] Data = { 12, 16, 19, 22, 25, 32, 39, 48, 55, 57,
    58, 63, 68, 69, 70, 78, 84, 88, 90, 97 }; // 数据数组
    public static int Counter = 1; // 计数器

    public static void main(String args[]) {
    int KeyValue = 22;
    // 调用折半查找
    if (BinarySearch((int) KeyValue)) {
    // 输出查找次数
    System.out.println("");
    System.out.println("Search Time = " + (int) Counter);
    } else {
    // 输出没有找到数据
    System.out.println("");
    System.out.println("No Found!!");
    }
    }

    // ---------------------------------------------------
    // 折半查找法
    // ---------------------------------------------------
    public static boolean BinarySearch(int KeyValue) {
    int Left; // 左边界变量
    int Right; // 右边界变量
    int Middle; // 中位数变量

    Left = 0;
    Right = Max - 1;

    while (Left <= Right) {
    Middle = (Left + Right) / 2;
    if (KeyValue < Data[Middle]) // 欲查找值较小
    Right = Middle - 1; // 查找前半段
    // 欲查找值较大
    else if (KeyValue > Data[Middle])
    Left = Middle + 1; // 查找后半段
    // 查找到数据
    else if (KeyValue == Data[Middle]) {
    System.out
    .println("Data[" + Middle + "] = " + Data[Middle]);
    return true;
    }
    Counter++;
    }
    return false;
    }
    }

  • 相关阅读:
    js简单的双向绑定
    angular的$scope
    angular一些冷门的用法
    堆栈
    angular一些有启发的博客
    160830、如何运用最新的技术提升网页速度和性能
    160829、Java加解密与数字签名
    160826、浏览器渲染页面过程描述,DOM编程技巧以及重排和重绘
    160825、互联网架构,如何进行容量设计?
    160824、ionic添加地图站点
  • 原文地址:https://www.cnblogs.com/wytiger/p/5341271.html
Copyright © 2020-2023  润新知