5.实现泛型二分查找方法

我们都知道二分查找,下面我们尝试写一个适用于所有类型的数组二分查找泛型方法。

代码如下:

/**
 * 泛型方法:二分查找法
 * @param array 查找数组
 * @param key 查找元素
 * @param <T> 类型变量
 * @return
 */
public static <T extends Comparable<? super 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, 7));
}

运行之:
在这里插入图片描述

おすすめ

転載: blog.csdn.net/c1776167012/article/details/121766670