`

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

运行结果:
       [12][76][29][22]
       Search Time = 4


二 折半查找


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

运行结果:
   Data[3] = 22
   Search Time = 5


原文网址:http://blog.csdn.net/myjava_024/archive/2008/11/18/3331247.aspx
分享到:
评论
1 楼 hhlwork 2011-10-21  

相关推荐

    java中折半法查找方法

    折半法查找是一种常用的查找算法,适用于已排序的数组。该算法的基本思想是将数组分成两部分,然后通过比较目标值与中点值的大小来确定目标值所在的半区间,如此反复直到找到目标值或确定目标值不存在。 在Java中,...

    史上最全,逻辑最清晰的Java经典算法教程:二分查找

    二分查找,也称为折半查找,是一种在有序数组中高效搜索特定元素的算法。它的基本思想是利用数组的有序性,通过每次比较中间元素来不断缩小搜索范围。相比于线性查找,二分查找的时间复杂度显著降低,达到了O(log n)...

    Java实现遍历、排序、查找算法及简要说明.docx

    在本文档中,我们主要探讨了Java中关于遍历、排序和查找算法的实现和简要说明。首先,我们详细介绍了二叉树的遍历算法,包括四种主要的遍历方式:先序遍历、中序遍历、后序遍历和层次遍历。 1. **遍历算法**: - *...

    用java实现得各种查找

    在Java编程语言中,查找算法是数据结构与算法领域中的重要组成部分。这些算法在处理大量数据时发挥着关键作用,帮助我们快速定位和获取所需的信息。本资源包含了一系列的Java实现,涵盖了多种查找技术,旨在帮助...

    数据与算法课件:8 查找.pdf

    本篇内容主要围绕查找技术展开,特别是线性查找和折半查找两种常见查找方法。 线性查找表是一种基本的数据结构,其中数据元素按照线性顺序存储。在查找过程中,我们从表的一端开始,逐个比较数据元素的关键字与目标...

    Java实现遍历、排序、查找算法及简要说明

    查找算法虽然在本题目中没有详细说明,但通常指的是在一个数据集合中寻找特定元素的过程,如线性查找、二分查找等。线性查找是最简单的方式,从头到尾遍历数组;而二分查找则适用于有序数组,通过不断缩小搜索范围...

    实例190 - 泛型化的折半查找法

    折半查找,也称为二分查找,是一种在有序数组中查找特定元素的搜索算法,其效率比线性查找高得多。 在Java中,传统的折半查找通常针对特定类型的数组(如整数或字符串)编写,而泛型化折半查找则可以适应任何实现了...

    java 折半查找法(二分查找)实例

    Java 折半查找法,也称为二分查找,是一种高效的搜索算法,尤其适用于已排序的数组。这个算法的基本思想是通过不断将待搜索区域减半,直到找到目标元素或者确定目标元素不存在为止。以下是关于折半查找法的详细解释...

    《二分查找算法》完整版教学设计

    《二分查找算法》是计算机科学中的一种经典算法,在本教学设计中,我们将深入探讨《二分查找算法》的教学目标、教学重点、教学难点、教学方法和教学过程。 教学目标 1. 了解二分查找算法的适用条件 2. 掌握二分...

    java实现的数据结构与算法

    《Java实现的数据结构与算法》是一本全面介绍数据结构和算法实现的书籍,以Java语言为载体,涵盖了面向对象程序设计的基本概念和特性,并深入探讨了数据结构与算法的方方面面,包括各种数据结构的基本概念、算法的...

    java排序 折半法

    通过这段代码,我们不仅学习了折半插入排序的基本原理和实现方法,还复习了Java语言中数组的操作、二分查找算法以及基本的控制结构。这对于Java初学者来说,是一次非常有价值的实践和学习机会。

    排序+匹配+查找算法

    它的时间复杂度为O(log n),比线性查找更高效。但在无序数据中,二分查找则无法应用。 以上就是关于“排序+匹配+查找算法”的详细解释,这些算法在编程、数据库、数据分析等多个领域都有广泛的应用。了解并掌握它们...

    JAVA算法题目集合程序习题:

    **折半查找**:二分查找算法,适用于有序数组,每次将查找区间缩小一半,直到找到目标元素或确定不存在。 - C3. **显示平方具有对称性质的数**:计算平方数,然后检查其是否为回文数,即正读和反读都相同的数。 -...

    java实现折半排序算法

    在Java中,我们可以用如下的代码实现折半排序算法: ```java public static void halfSort(int[] array) { int low, high, mid; int tmp, j; // 对数组中的每个元素进行排序 for (int i = 1; i ; i++) { // ...

    java 二分查找法的实现方法

    这段代码中,`binarySearch`函数实现了二分查找算法,`main`函数中给出了一个测试用例。 4. **适用场景**: 二分查找法适用于已排序的数组或列表,如在大量数据中快速定位特定值,或者在数据库索引中查找数据等。...

    java常见算法题解析大全。

    Java是一种广泛使用的编程语言,尤其在处理复杂计算和数据结构时,其强大的功能和灵活性使其成为实现算法的理想选择。在这个“java常见算法题解析大全”中,你将找到一系列涵盖不同难度级别的算法问题,旨在帮助Java...

    java 冒泡算法和插入法排序,二分法查找

    二分法查找的时间复杂度为O(log n),比线性查找效率高很多。 对于初学者,理解这些基础算法的概念、工作原理以及它们的实现方式至关重要。在实际编程中,熟练运用这些算法能有效提高代码的执行效率。在Java中,你...

    二分查找算法和冒泡排序算法

    二分查找,也称为折半查找,是一种在有序数组中查找特定元素的搜索算法。它的基本思想是通过不断缩小搜索范围,将问题规模减半,从而提高搜索效率。当数组已经排序时,二分查找可以达到O(log n)的时间复杂度,比线性...

    java笔记之算法篇.docx

    本文主要探讨了两种查找算法和两种排序算法,这些都是Java编程中常见的基础算法。首先,我们来看查找算法。 1. 折半查找(二分查找) 折半查找是一种在有序数组中查找特定元素的高效方法。其基本思想是通过不断将...

    第03章 方法与数组 10 二分查找算法

    二分查找算法,又称折半查找,是一种在有序数组中查找特定元素的高效搜索算法。在计算机科学中,尤其在Java编程中,掌握这种算法对于优化数据处理性能至关重要。本章将深入探讨二分查找的基本原理、实现方式以及其在...

Global site tag (gtag.js) - Google Analytics