`

折半查找【原】

 
阅读更多

public static <AnyType extends Comparable<? super AnyType>> int binarySearch(

AnyType[] a, AnyType x) {

 

int NOT_FOUND = -1;

 

int low = 0, high = a.length - 1;

 

while (low < high) {

 

int mid = (low + high) / 2;

 

if (a[mid].compareTo(x) < 0) {

low = mid + 1;

} else if (a[mid].compareTo(x) > 0) {

high = mid - 1;

} else {

return mid;

}

}

 

return NOT_FOUND;

}

 

 

这是定义了一个公共的(public)静态的(static )泛型方法
其中<AnyType extends Comparable<? super AnyType>>是泛型的类型,定义类型只能是Comparable或Comparable的子类,并且Comparable也是一个泛型类他的 类型只能是AnyType或是AayType的超类也就是AayType父类
int 是方法的返回类型
(AnyType[] a,AnyType x)参数列表,第一个是传递进来的数组第二个是一个值,也就是查找该值在数组中的下标,他们的类型都是该泛型方发传进来的类型

分享到:
评论

相关推荐

    折半查找 减治法-C语言

    在这个特定的场景中,我们关注的是如何使用C语言实现折半查找(Binary Search)算法,这正是减治法的一个典型应用。 折半查找,也称为二分查找,是一种在有序数组中查找特定元素的有效方法。它的基本思想是,首先...

    用分治法编写的二分查找,快速排序和折半查找

    本篇主要介绍使用分治法实现的三个经典算法:二分查找、快速排序以及折半查找。这三种算法在编程实践中具有广泛的应用,并且都是C++语言实现,经验证无误,适用于学习和实际项目。 首先,我们来看二分查找。二分...

    javascript 折半查找字符在数组中的位置(有序列表).docx

    ### JavaScript 折半查找字符在数组中的位置(有序列表) #### 概述 本文将详细介绍如何使用JavaScript实现折半查找算法来查找一个字符在有序数组中的位置。折半查找(也称为二分查找)是一种效率较高的查找算法,...

    JavaScript折半查找(二分查找)算法原理与实现方法示例

    JavaScript中的折半查找,也称为二分查找,是一种在有序数组中快速查找特定元素的算法。它的核心思想是利用数组的有序性,每次查找都通过比较中间元素与目标值来缩小搜索范围,从而达到高效查找的目的。以下是折半...

    chazhao.zip_21 | 19

    在给定的“chazhao.zip_21 | 19”压缩包文件中,包含了一个名为“chazhao.txt”的文本文件,我们可以推测这个文件可能详细介绍了与折半查找(Binary Search)相关的知识。折半查找是一种在有序数组中查找特定元素的...

    算法设计与分析--5减治法.ppt

    折半查找的基本思想是,将查找区间分成两个部分,比较查找值与中间记录的关键码,并根据比较结果确定查找值在哪个部分继续查找。这样,折半查找可以减少查找时间,使得算法的执行效率提高。 在减治法中,我们可以将...

    数据结构第9章查找习题.pdf

    6. 折半查找的查找次数与查找的元素位置有关,这里需要根据给定的有序表计算具体次数。 7. 二叉排序树的查找长度与节点分布和树的形态有关。 8. 通过构造二叉排序树,可以将无序序列转换为有序。 9. 平衡二叉排序树...

    希尔排序,直接插入排序,折半插入排序算法.

    根据给定文件中的标题、描述、标签以及部分内容,我们可以总结出关于希尔排序(Shell Sort)、直接插入排序(Direct Insertion Sort)以及折半...而折半插入排序则结合了二分查找的优势来减少比较次数,提高排序速度。

    c语言冒泡排序

    printf("原序列:"); for (i = 0; i ; i++) printf("%d", a[i]); ``` - `printf` 函数用于输出文本和数据。 - `%d` 格式符用于输出整数 `a[i]`。 ##### 7. **冒泡排序实现** ```c for (i = 0; i ; i++) ...

    算法设计与实现-分治法

    本知识点总结了算法设计与实现中的分治法,涵盖了算法概要、效率概述、折半查找、合并排序、快速排序、大整数排序、Strassen 矩阵乘法等多种算法思想和实现过程。同时,也提供了相关习题供读者实践。 分治法概述 ...

    JS折半插入排序算法实例

    而在JS中,我们可以利用折半查找来优化这个过程,减少比较的次数,这就是所谓的“折半插入排序”。 在本文中,我们将深入探讨如何在JavaScript中实现这种排序算法。首先,我们来看一个关键的辅助函数`...

    数据结构 习题8 查找.doc

    例如,顺序查找的平均查找长度为 (n+1)/2,折半查找的平均查找长度为 O(log2n),哈希表采用链地址法处理冲突时的平均查找长度取决于负载因子和数据分布等。其他空缺也需要根据题目给出的特定数据进行计算。 总之,...

    数据结构C严蔚敏版_全注释源码_线性表队列栈监视哨查找折半直接插入排序冒泡快速选择

    包含监视哨查找,折半查找,直接插入排序,希尔排序,冒泡排序,快速排序,选择排序。里面包含超大量的注释,包括对VC6的语法解释和算法的解释和理解。具体效果可以看 ...

    西南交大c++实验报告8.pdf

    实验任务包括使用选择排序法将学生数据按学号进行升序排列,使用折半查找法查找学生信息,并完成插入、删除、修改学生数据等操作。 实验目的 1. 掌握对数值型一维数组的使用方法。 2. 掌握对数组的插入、删除、...

    吉大数据结构课程 数据结构与算法课程 由浅入深 讲解清晰 08 第八章 查找(共91页).pptx

    首先,对半查找(又称折半查找)的概念被提及,这是一种在有序数据中快速定位元素的方法。随着时间的推移,对半查找演变为更复杂的一致对半查找、斐波那契查找和插值查找算法,这些算法提高了在特定情况下的查找效率...

    C++基础课件第九章函数的高级应用.ppt

    折半查找则是在有序数组中进行,每次比较中间元素,根据比较结果缩小查找范围,时间复杂度为O(logn)。 1-6 折半查找 折半查找通过比较中间元素来减少查找次数,适合于已经排序的数组。每次比较后,根据比较结果将...

    C++实现折半插入排序(BinaryInsertSort)

    // low、high作为折半查找的上、下界 while (low ) { mid = (low + high) / 2; if (temp [mid]) high = mid - 1; else low = mid + 1; } // while // 顺序后移 for (j = i - 1; j &gt;= low; j--) arr[j +...

    二分查找,动态规划,视频讲解

    二分查找,也被称为折半查找,是一种在有序数组中寻找特定元素的搜索算法。它的基本思想是通过不断缩小搜索范围,以最快的速度找到目标值。二分查找的过程分为以下几个步骤: 1. 首先,我们确定中间元素。这可以...

    18308045_谷正阳-81

    - **折半查找**:对于有序数组,折半查找的ASLsuccess是(n + 1) * log2(n + 1) / n - 1,ASLfailure是log2(n + 1)。折半查找效率较高,但前提是数据已经排序。 2. **链表操作**: - **静态搜索**:`static_search...

Global site tag (gtag.js) - Google Analytics