`
jianchen
  • 浏览: 343336 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

用分治法实现二叉查找

阅读更多
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package myjava;
public class BinarySearch {

    static void find(int[] A, int low, int high, int num) {
       
        if (high - low <= 0 ) {
           if(A[high] == num)
           System.out.println("find it");
        return;
        }
         find(A, low, (low + high) / 2, num);
        find(A, (low + high) / 2 + 1, high, num);
    
    }
    static boolean find_bool(int[] A, int low, int high, int num){
   if (high - low <= 0) {
            if (A[high] == num) {
                System.out.println("find it");
                return true;
            }
            else {
                return false;}
        } else {
            return find_bool(A, low, (low + high) / 2, num) & find_bool(A, (low + high) / 2 + 1, high, num);
        }
    
    }
        

    public static void main(String[] args) {
        int[] A = {1, 2, 3, 12, 34, 4, 56, 11, 31, 5};
         BinarySearch.find(A, 0, 9, 1);
      

    }
}
 
分享到:
评论

相关推荐

    分治法解决一二维点对

    在实际编程实现中,分治法通常伴随着数据结构的选择和优化。例如,使用平衡二叉搜索树(如AVL树或红黑树)可以保证插入、删除和查找操作的时间复杂度为O(log n)。对于二维点对问题,kd树是一种特别适合的数据结构,...

    分治法实现二分搜索(c语言)

    二分搜索,也被称为折半查找,是一种...总结来说,二分搜索是利用分治法在有序数组中查找元素的一种高效算法,其C语言实现通常涉及递归或迭代的过程。在实际编程中,理解并熟练运用二分搜索可以极大地提高代码的性能。

    构造最优二叉查找树的时间复杂度动态规划资料.pdf

    【时间复杂度】在构造最优二叉查找树的问题中,有两种主要的方法:分治法和动态规划。 1. **分治法**: 分治策略试图将问题分解为更小的部分来解决。在构建最优二叉查找树时,如果直接应用分治,会发现左右子树的...

    最近点对问题 分治法.cpp.rar

    文件名“最近对问题 分治法.cpp”表明代码是用C++编写的,并且采用了分治策略来解决最近点对问题。 下面,我们详细探讨如何使用分治法解决最近点对问题: 1. **分治法步骤**: - **分解**:将输入的点集分为两半...

    浅析分治法

    分治法的标签中提到“源码”,这可能意味着博文中会包含使用某种编程语言实现的分治法示例代码,可能是归并排序或者其他使用分治法解决的算法。这将帮助读者更好地理解分治法的实践应用,并提供动手实现的机会。 ...

    分治法讲义

    二叉查找树(Binary Search Tree)的构建过程也体现了分治的思想。在插入元素时,树被“分”成左子树和右子树,分别包含小于和大于当前节点值的所有节点。这样,“治”就是将新节点插入到适当的位置,而“合”则是...

    算法设计与分析课件-第四章 分治法.ppt

    尽管这个问题可以通过简单的循环进行串行计算,但也可以用分治法来实现。分治法并不总是比蛮力法更高效,其效率取决于问题的特性和分解及合并操作的时间复杂度。例如,对于求和问题,分治法的时间复杂度可以用递推...

    基于二叉排序树的排序查找应用C源码

    Hoare在1960年提出,它是一种采用分治法的排序算法。快速排序的基本步骤包括选择一个基准值,将数组分为小于基准值和大于基准值的两部分,然后对这两部分分别进行快速排序,直到整个数组有序。 接下来,我们要讨论...

    Java分治法与二分搜索算法实例分析

    Java分治法与二分搜索算法实例分析 ...本文实例讲述了Java分治法与二分搜索算法,简单讲述了分治法与二分搜索算法的原理并结合java实例分析了二分搜索算法的实现与使用技巧,需要的朋友可以参考下。

    算法设计--蛮力法&&分治法求最近对问题(C++实现).rar

    标题中的“算法设计--蛮力法&&分治法求最近对问题(C++实现)”表明这个压缩包文件包含了一种解决寻找数据集中最近对问题的算法,主要使用了两种方法:蛮力法(Brute Force)和分治法(Divide and Conquer)。...

    分治法求近似解和快速排序

    分治法是一种重要的计算机算法设计策略,其...分治法不仅适用于排序和求解方程,还在许多其他领域,如图论、数据结构(如二叉查找树)和计算几何等,都有广泛的应用。学习和掌握分治法对于理解和解决复杂问题至关重要。

    大学算法课件包括分治法,动态规划,集合算法,随机算法,计算模型,NP完全问题

    典型的分治法应用包括排序算法(如快速排序和归并排序)和求解最值问题(如二分查找)。 **动态规划** 动态规划是一种用于解决具有重叠子问题和最优子结构的复杂问题的方法。它通过存储和重用以前计算的子问题结果...

    算法导论(part1)

    ·在第12.4节中,对随机构造二叉查找树的高度,给出了一个简单得多的分析。 ·对动态规划元素的讨论(第15.3节)和对贪心算法元素的讨论(第16.2节)大大地扩展了。关于活动选择问题的解释在贪心算法一章中开始出现...

    数据结构&算法1

    二分搜索(binary search)是一种基于分治策略(divide & conquer)的高效算法,通常用于有序数组或二叉查找树中。在解决递归问题时,应避免人工递归,而是将其拆分为可重复的子问题,并考虑数学归纳法来证明正确性...

    C语言的各种排序及查找的算法

    4. **二叉搜索树查找(Binary Search Tree Search)**:二叉搜索树中,左子树的值小于父节点,右子树的值大于父节点,查找过程类似二分查找,但需考虑树的结构。 在C语言中实现这些算法时,需要注意内存管理、效率...

    数据结构中的查找和排序

    归并排序同样采用分治法,将数据分成两半分别排序后再合并。堆排序利用了完全二叉树的特性,通过构建和调整堆来达到排序目的。 在数据结构中,不同的数据结构适合不同的查找和排序算法。例如,数组适合二分查找和...

    算法分析与设计PPT

    这份PPT涵盖了从基础到高级的多个算法主题,包括排序、分治法、动态规划、贪心算法以及特定数据结构如二叉查找树和红黑树的应用。 1. **排序算法**:在《第2讲 排序问题-堆排序.ppt》中,讲解了堆排序这一重要的...

    第k小数算法排序 以及算法的实现

    《第k小数算法排序及查找算法的实现》 在计算机科学中,查找算法和排序算法是基础且至关重要的组成部分。查找技术涉及在数据集中寻找特定元素,而排序则是将一组数据按照特定规则进行排列。本文主要探讨的是查找...

    数据结构与算法(JAVA语言版)

    - **二叉查找树**:介绍二叉查找树的定义,以及二叉查找树的基本操作。 - **AVL树**:解释AVL树的概念,以及AVL树的平衡调整方法。 - **B-树**:介绍B-树的结构特点,以及B-树的插入和删除操作。 - **哈希** - ...

Global site tag (gtag.js) - Google Analytics