一 线性查找
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
分享到:
相关推荐
折半法查找是一种常用的查找算法,适用于已排序的数组。该算法的基本思想是将数组分成两部分,然后通过比较目标值与中点值的大小来确定目标值所在的半区间,如此反复直到找到目标值或确定目标值不存在。 在Java中,...
二分查找,也称为折半查找,是一种在有序数组中高效搜索特定元素的算法。它的基本思想是利用数组的有序性,通过每次比较中间元素来不断缩小搜索范围。相比于线性查找,二分查找的时间复杂度显著降低,达到了O(log n)...
在本文档中,我们主要探讨了Java中关于遍历、排序和查找算法的实现和简要说明。首先,我们详细介绍了二叉树的遍历算法,包括四种主要的遍历方式:先序遍历、中序遍历、后序遍历和层次遍历。 1. **遍历算法**: - *...
在Java编程语言中,查找算法是数据结构与算法领域中的重要组成部分。这些算法在处理大量数据时发挥着关键作用,帮助我们快速定位和获取所需的信息。本资源包含了一系列的Java实现,涵盖了多种查找技术,旨在帮助...
本篇内容主要围绕查找技术展开,特别是线性查找和折半查找两种常见查找方法。 线性查找表是一种基本的数据结构,其中数据元素按照线性顺序存储。在查找过程中,我们从表的一端开始,逐个比较数据元素的关键字与目标...
查找算法虽然在本题目中没有详细说明,但通常指的是在一个数据集合中寻找特定元素的过程,如线性查找、二分查找等。线性查找是最简单的方式,从头到尾遍历数组;而二分查找则适用于有序数组,通过不断缩小搜索范围...
折半查找,也称为二分查找,是一种在有序数组中查找特定元素的搜索算法,其效率比线性查找高得多。 在Java中,传统的折半查找通常针对特定类型的数组(如整数或字符串)编写,而泛型化折半查找则可以适应任何实现了...
Java 折半查找法,也称为二分查找,是一种高效的搜索算法,尤其适用于已排序的数组。这个算法的基本思想是通过不断将待搜索区域减半,直到找到目标元素或者确定目标元素不存在为止。以下是关于折半查找法的详细解释...
《二分查找算法》是计算机科学中的一种经典算法,在本教学设计中,我们将深入探讨《二分查找算法》的教学目标、教学重点、教学难点、教学方法和教学过程。 教学目标 1. 了解二分查找算法的适用条件 2. 掌握二分...
《Java实现的数据结构与算法》是一本全面介绍数据结构和算法实现的书籍,以Java语言为载体,涵盖了面向对象程序设计的基本概念和特性,并深入探讨了数据结构与算法的方方面面,包括各种数据结构的基本概念、算法的...
通过这段代码,我们不仅学习了折半插入排序的基本原理和实现方法,还复习了Java语言中数组的操作、二分查找算法以及基本的控制结构。这对于Java初学者来说,是一次非常有价值的实践和学习机会。
它的时间复杂度为O(log n),比线性查找更高效。但在无序数据中,二分查找则无法应用。 以上就是关于“排序+匹配+查找算法”的详细解释,这些算法在编程、数据库、数据分析等多个领域都有广泛的应用。了解并掌握它们...
**折半查找**:二分查找算法,适用于有序数组,每次将查找区间缩小一半,直到找到目标元素或确定不存在。 - C3. **显示平方具有对称性质的数**:计算平方数,然后检查其是否为回文数,即正读和反读都相同的数。 -...
在Java中,我们可以用如下的代码实现折半排序算法: ```java public static void halfSort(int[] array) { int low, high, mid; int tmp, j; // 对数组中的每个元素进行排序 for (int i = 1; i ; i++) { // ...
这段代码中,`binarySearch`函数实现了二分查找算法,`main`函数中给出了一个测试用例。 4. **适用场景**: 二分查找法适用于已排序的数组或列表,如在大量数据中快速定位特定值,或者在数据库索引中查找数据等。...
Java是一种广泛使用的编程语言,尤其在处理复杂计算和数据结构时,其强大的功能和灵活性使其成为实现算法的理想选择。在这个“java常见算法题解析大全”中,你将找到一系列涵盖不同难度级别的算法问题,旨在帮助Java...
二分法查找的时间复杂度为O(log n),比线性查找效率高很多。 对于初学者,理解这些基础算法的概念、工作原理以及它们的实现方式至关重要。在实际编程中,熟练运用这些算法能有效提高代码的执行效率。在Java中,你...
二分查找,也称为折半查找,是一种在有序数组中查找特定元素的搜索算法。它的基本思想是通过不断缩小搜索范围,将问题规模减半,从而提高搜索效率。当数组已经排序时,二分查找可以达到O(log n)的时间复杂度,比线性...
本文主要探讨了两种查找算法和两种排序算法,这些都是Java编程中常见的基础算法。首先,我们来看查找算法。 1. 折半查找(二分查找) 折半查找是一种在有序数组中查找特定元素的高效方法。其基本思想是通过不断将...
二分查找算法,又称折半查找,是一种在有序数组中查找特定元素的高效搜索算法。在计算机科学中,尤其在Java编程中,掌握这种算法对于优化数据处理性能至关重要。本章将深入探讨二分查找的基本原理、实现方式以及其在...