zoukankan      html  css  js  c++  java
  • 算法(二):查找

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

    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;
    }
    }

  • 相关阅读:
    Android MVP
    Intellij Idea/Webstorm/Phpstorm 的高效快捷键
    如何在Webstorm/Phpstorm中设置连接FTP,并快速进行文件比较,上传下载,同步等操作
    前端开发利器webStorm /phpStorm
    CSS清除浮动方法集合
    14 JS基本语句
    12.8.8 可见与隐藏
    12.8 定位属性
    12.5 段落属性
    12.4 背景属性
  • 原文地址:https://www.cnblogs.com/wytiger/p/5341271.html
Copyright © 2011-2022 走看看