`

数组的二叉查找算法

 
阅读更多

从数组中查找特定数据的最简单方法就是遍历数组中的所有元素,这种方法也叫线性查找。线性查找适用于小型数据或未排序的数组。

1.定义数组; 2.调用方法,参数传递; 3.判断,return

这里涉及到参数传递;局部变量作为参数传递,传递时强调引用类型

import java.util.Scanner;

public class indexof {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
//     Scanner scan= new Scanner(System.in);
		int[] a = new int[]{4,2,3};
        System.out.println(indexOf(a,2));
	}

	private static int indexOf(int[] a, int value) {
		// TODO Auto-generated method stub
		for(int i=0;i<a.length;i++){
			if(a[i]==value) return i;
		}
		return -1;
	}

}

 对于大型已排序好的数组,可以采用高效的二叉查找算法;该算法找到数组中位于中间的元素,若等于中间的元素,就返回该元素的索引,入则,将问题简化为查找已排序数组的一半元素。

1.定义数组; 2.调用方法;3.输出

注意:循环用while,可以判断;此外while里面的条件要是low<=high,不要把等于号去掉了,会没办法停止循环;此外要注意三个判断语句时,要注意顺序

public class split {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
     int[] a = new int[]{2,3,5,6,9};
     System.out.println(indexOf(a,3));
	}

	private static int indexOf(int[] a, int value) {
		// TODO Auto-generated method stub
		int low=0;
		int high=a.length-1;
		int middle;
		while(low<=high){
			middle=(high+low)/2;
		if(value==a[middle])return middle;
		if(value<a[middle]){
			high=middle-1;
		}else{
			low=middle+1;
		}
		
	}
		return -1;
	}
}

 

1
0
分享到:
评论

相关推荐

    中英代码理解数组的二叉查找法

    二叉查找法是一种高效的数据搜索算法,其基本思想是通过不断地将待查找的范围减半,从而快速定位到目标元素。这种方法特别适用于大型且有序的数组。本文将深入解析二叉查找法,并通过中文和英文两种编程语言的代码...

    第六课_二分查找与二叉查找树.pdf

    二分查找算法是一种在有序数组中查找特定元素的高效算法。它的工作原理是将数组分成两部分,然后判断目标值与中间元素的大小关系,缩小查找范围,直至找到目标值或者确定目标值不存在于数组中。二分查找的效率远高于...

    《数据结构与算法》-李春葆 实验报告-典型查找算法实践-二叉查找树实现查找

    数组 `a` 用于初始化二叉查找树,然后通过 `PredBST` 变量检查树的性质。 这个实验不仅加深了对二叉查找树的理解,还锻炼了实际编程实现查找算法的能力,是学习数据结构与算法过程中非常有价值的一环。通过实验,...

    最优二叉查找树 动态规划法.cpp.rar

    最优二叉查找树(Optimal Binary Search Tree, OBST)是一种高效的检索数据结构,它根据键值分布的不同,自适应地调整树的形态以达到最小化查找时间的目的。在计算机科学中,动态规划(Dynamic Programming, DP)是...

    最优二叉查找树

    一旦所有子树的成本都被计算出来,算法便可以通过递归地调用`constructOptimalBST`函数,根据动态规划过程中记录的最优根节点选择,构建出整个最优二叉查找树的结构。在构建过程中,函数会打印出树的结构信息,包括...

    把int数组的内容放到一颗二叉树上去,并对二叉树排序

    这种性质使得二叉搜索树非常适合查找、插入和删除操作。 现在我们来构建一个二叉搜索树。假设我们有一个int类型的数组arr,我们可以从数组的第一个元素开始,将其作为根节点。然后遍历数组的其余元素,将每个元素...

    C#基础查找算法的分析,实现

    **二叉查找(折半查找)** 是一种高效的查找算法,它要求数据集必须是有序的,如排序后的数组。二叉查找利用了二分的思想,每次查找都将目标值与数据集中间元素进行比较,根据比较结果缩小查找范围,然后在缩小后的...

    综合查找算法(顺序查找、折半查找、二叉排序树、哈希表)-数据结构课程设计

    本文将详细探讨四种常见的查找算法:顺序查找、折半查找、二叉排序树查找以及哈希表查找,并结合提供的"综合查找算法"课程设计项目,解析其在实际应用中的特点和优势。 **顺序查找**是最基础的查找算法,适用于任何...

    3种查找算法——数据结构实验

    本实验主要探讨了三种基本的查找算法:顺序查找、折半查找(二分查找)和索引查找,这些算法都是在数组或集合中寻找特定元素的重要方法。下面将详细解释这三种查找算法,并结合C语言编程环境进行深入分析。 1. **...

    python 数据结构 算法 LeetCode 牛客 面试 编程之美 动态规划 字典树 快速排序 树 字符串 数组 链表 全排列

    树 * 字典树 ...* 二叉查找树-从有序数组中构造二叉查找树 * 二叉查找树-从有序链表构造平衡的二叉查找树 * 二叉树-的最大深度 数组&字符串 查找排序 排列组合 动态规划 树 链表 数学 位运算 编程之美

    BST.rar_二叉查找

    **二叉查找树(Binary Search Tree,简称BST)**是一种自平衡的二叉搜索数据结构,它具有以下特性: 1. 每个节点都包含一个键(key)、一个关联的值、一个指向左子节点的引用和一个指向右子节点的引用。 2. 节点的...

    VC/C++实现二叉搜索树查找算法

    在本主题中,我们将深入探讨如何使用VC/C++编程语言实现二叉搜索树的查找算法。 首先,我们需要理解二叉搜索树的基本性质:对于树中的每个节点,其左子树中的所有节点的值都小于该节点,而右子树中的所有节点的值都...

    二分查找(Binary Search)是一种在有序数组中查找某一特定元素的搜索算法.txt

    对于非静态的数据集,可以使用其他查找算法如跳表(Skip List)或平衡二叉搜索树(如AVL树、红黑树)来实现高效的动态数据集搜索。 总之,二分查找是一种简单且效率很高的算法,广泛应用于计算机科学与工程领域。...

    数据结构查找算法实验报告.doc

    折半查找算法是对有序数组的查找算法,其思想是先对数组进行排序,然后使用三个标志分别指向最大、中间和最小数据,最后根据待查找数据和中间数据的比较不断移动标志,直至找到目标数据。该算法的时间复杂度为O(logn...

    用c语言设计查找算法

    本篇文章将详细探讨如何用C语言设计查找算法,以及二叉排序树(Binary Search Tree, BST)的相关操作。 首先,我们来理解一下什么是二叉排序树。二叉排序树是一种特殊的二叉树,其中每个节点的左子树只包含比该节点...

    11.数据结构与算法基础-查找算法

    5. **排序数组的查找算法优化**:除了二分查找,还有一些基于排序数组的查找算法,如斐波那契查找,它利用斐波那契数列的特性,比二分查找有更少的比较次数,但实际应用较少。 6. **动态查找**:在数据不确定或者...

    合肥工业大学数据结构试验七查找

    &lt;1&gt; 对下列数据表,分别采用二分查找算法实现查找,给出查找过程依次所比较的元素(的下标),并以二分查找的判定树来解释。 &lt;2&gt; 设计出在二叉排序树中插入结点的算法,在此基础上实现构建二叉排序树的算法。 &lt;3&gt; ...

    顺序查找,折半查找,二叉排序树,哈希表

    下面,我们将介绍四种常见的查找算法:顺序查找、折半查找、二叉排序树和哈希表。 顺序查找 顺序查找是最简单的一种查找算法。它的工作原理是从数据集合的开始处依次比较每个元素,直到找到目标元素或者达到集合的...

    C语言数组的数组 排序,删除,查找联合搬

    例如,如果数组大小固定且不经常改变,直接使用数组配合合适的排序和查找算法即可;如果需要频繁插入和删除元素,链表或平衡二叉树可能更为合适。 总结,C语言中的数组操作是程序设计的基础,理解并掌握各种排序、...

    C#按指定条件在数组中检索元素

    - 对于大规模数据,考虑使用更高效的数据结构(如哈希表或二叉搜索树)或算法(如二分查找)进行查找,以提高查找效率。 8. **总结** - 在C#中,按照指定条件在数组中检索元素的方法多种多样,从简单的线性搜索到...

Global site tag (gtag.js) - Google Analytics