`

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

 
阅读更多

折半查找法的平均时间复杂度是log2n。

心法领悟190:泛型在数据结构中的应用。

在学习数据结构的过程中,为了理解方便和简化编程,通常都使用整数作为分析的对象。利用Java的泛型机制,只需要将int替换成泛型类型T就可以实现更加通用的算法。这样就不需要再对不同的数据类型编写不同的算法实现。

提示:Java SE API (java.util.Arrays)中已经实现了优化了的折半查找算法,实际编程中推荐大家使用。

package com.mingrisoft.generic;

import java.util.Arrays;

public class BinSearch {
    public static <T extends Comparable<? extends T>>  int search(T[] array, T key) {
        int low = 0;
        int mid = 0;
        int high = array.length;
        System.out.println("被查找的中间值:");
        while (low <= high) {
            mid = (low + high) / 2;
            System.out.print(mid+" ");
            if (key.compareTo(array[mid]) > 0) {
                low = mid + 1;
            } else if (key.compareTo(array[mid]) < 0) {
                high = mid - 1;
            } else {
                System.out.println();
                return mid;
            }
        }
        return -1;
    }
    
    public static void main(String[] args) {
        Integer[] ints = {1,2,3,4,5,6,7,8,9,10};
        System.out.println("数据集合:");
        System.out.println(Arrays.toString(ints));
        System.out.println("元素3所对应的索引序号:"+search(ints, 3));
    }
}

 Result:

数据集合:
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
被查找的中间值:
5 2 
元素3所对应的索引序号:2

 

分享到:
评论

相关推荐

    实例188 -泛型化接口与最大值

    "实例188 - 泛型化接口与最大值"这个主题探讨了如何在接口设计中利用泛型来实现通用的最大值计算功能。 首先,我们来理解泛型接口。接口(Interface)在Java中是一种定义行为的蓝图,而泛型接口则是接口与泛型的...

    实例187 - 泛型化方法与最小值

    泛型化方法与最小值是Java编程中一个重要的概念,主要涉及到类型安全和代码复用。在Java中,泛型是一种强大的工具,它允许我们在编译时检查类型,并且能够编写出可重用的、与特定类型无关的代码。本文将深入探讨泛型...

    Generic_2(泛型类-泛型方法-泛型接口-泛型限定(上限)

    泛型是Java SE 1.5的新特性,泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。这种参数类型可以用在类、接口和方法的创建中,分别称为泛型类、泛型接口、泛型方法。 Java语言引入泛型的好处是...

    JAVA-泛型课件-泛型课件

    使用泛型类时,可以在实例化的时候指定具体的类型,如`ArrayList&lt;Integer&gt;`。 ### 泛型方法 泛型方法是指在其返回类型前面声明了一个或多个类型参数的方法。泛型方法可以独立于类而独立存在,也可以在泛型类或非...

    实例185 - 自定义泛型化数组类

    "实例185 - 自定义泛型化数组类"是一个关于如何创建和使用自定义泛型数组类的示例,这个主题将深入探讨泛型、数组以及两者的结合。 首先,我们需要理解泛型的基本概念。泛型是Java 5引入的一个重要特性,它允许我们...

    实例186 - 泛型方法与数据查询

    在这个实例186中,我们将深入探讨泛型方法以及它们在数据查询中的应用。 首先,让我们了解泛型的基本概念。泛型是在Java SE 5.0引入的,其主要目标是增强类型安全并消除在运行时检查类型所必需的强制类型转换。泛型...

    Generic_3(泛型限定(下限)-泛型限定(上限的体现)-泛型限定(下限的体现)-泛型限定(通配符的体现)-集合查阅的技巧)

    泛型是Java SE 1.5的新特性,泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。这种参数类型可以用在类、接口和方法的创建中,分别称为泛型类、泛型接口、泛型方法。 Java语言引入泛型的好处是...

    8-java进阶-泛型1

    在类的实例化过程中,如果没有明确指定类型,那么默认类型将是`Object`。 - 类中的成员变量和方法可以使用这些类型参数,例如`T age`。 3. **泛型方法**: - 泛型方法可以在任何类或接口中定义,它们不是类的一...

    C#学习之路--泛型

    在“C#学习之路--泛型”这个主题中,我们将深入探讨泛型的基本概念、泛型的定义和类型参数、泛型类和泛型接口,以及泛型委托和泛型事件。 **泛型的基本概念** 泛型是C# 2.0引入的一个新特性,它的核心思想是推迟...

    GP-泛型算法通则.rar_GP算法_gp_泛型

    5. 实例分析:可能包含具体的代码示例,展示如何在实际项目中应用GP-泛型算法,通过实例加深对理论的理解。 6. 设计与实现策略:讨论在设计和实现GP-泛型算法时应考虑的关键因素,如效率、可读性、可维护性等,以及...

    14-泛型.ts

    14-泛型

    泛型实例<匿名方法实现排序与查找>

    在这个“泛型实例&lt;匿名方法实现排序与查找&gt;”中,我们将深入探讨如何利用泛型以及匿名方法来实现数据的排序和查找功能,这在S2学期的学习中是非常关键的实践环节。 首先,让我们理解什么是泛型。泛型是在.NET框架中...

    java-泛型-面试题.docx

    java-泛型-面试题.docx

    29-API-集合框架-泛型-使用_java_

    Java 泛型是Java编程语言中的一个重要特性,它在2004年随着...这个视频教程"29-API-集合框架-泛型-使用"应该会深入浅出地讲解这些概念,对于想要提升Java编程技能的初学者或有经验的开发者来说,都是很好的学习资源。

    黑马程序员----泛型学习注意点

    泛型类的实例化必须提供实际类型参数,如`List&lt;String&gt; list = new ArrayList()`。不过,对于无参构造函数的类,可以通过类型推断简化实例化,如`List&lt;String&gt; list = new ArrayList()`。 11. 类型参数的约束: ...

    java基础-泛型通配符

    java基础-泛型通配符

    CTL--泛型的数据结构

    在IT领域,泛型编程是一种强大的编程范式,它允许我们编写可以处理多种数据类型的代码。C++中的标准模板库(Standard Template Library, STL)就是泛型编程的一个典范,提供了高效且灵活的数据结构和算法。然而,...

    Java-泛型.ppt

    **泛型**是一种参数化类型,它允许在类、接口和方法中使用类型参数,从而提高程序的重用性和类型安全性。泛型提供了一种在编译时检查类型安全性的机制,并且在运行时避免了不必要的类型转换。 #### 二、泛型类与...

    11.4java-泛型(Generic).md

    11.4java-泛型(Generic)

Global site tag (gtag.js) - Google Analytics