【每日打卡贴】《JAVA筑基100例》【第66题】必学的泛型3-泛型化的折半查找法

李慢慢 2022-05-28 18:49:28

题目

题目:泛型是JAVA重要的特性,使用泛型编程,可以使代码复用率提高。

实现:查找作为泛型的一个简单应用,使用泛型实现折半查找法

解题思路

折半查找要求数据集合中的元素必须可比较,并且各元素按升序或降序排列。取集合的中间元素作为比较对象,如:

(1)如果给定的值与比较对象相等,则查找成功,返回中间元素的序号。

(2)如果给定的值大于比较对象,则在中间元素的右半段进行查找。

(3)如果给定的值小于比较对象,则在中间元素的左半段进行查找。

代码实现

package basic.example;

import java.lang.reflect.Array;
import java.util.Arrays;

/**
 * Description: 泛型化的折半查找法
 *
 * @author hongzx
 * @date 2022/5/28
 * @version 1.0
 *
 * <pre>
 * 修改记录:
 * 修改后版本   修改人       修改日期         修改内容
 * 2022/5/28      hongzx    2022/5/28    Create
 * </pre>
 *
 */
public class BasicFor66 {

    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.println(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("数据集合:" + Arrays.toString(ints));
        System.out.println("元素3所对应的索引序号为:" + search(ints, 3));
    }
}

结果截图

 

...全文
32 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
CSDN-Ada助手 2023-01-13
  • 打赏
  • 举报
回复
您可以前往 CSDN问答-Java 发布问题, 以便更快地解决您的疑问

123,647

社区成员

发帖
与我相关
我的任务
社区描述
越努力越幸运,一个人努力可以走得很快,一群人努力,可以走得很远,准备好一起成为架构师了嘛!
社区管理员
  • 小虚竹
  • 阿莫 夕林
  • java李杨勇
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

【十日集训】十日训练营活动正式开始!和小虚竹一起,打卡学习,从入门到大佬,准备好一起成为JAVA架构师了嘛!!

【添加微信】备注1024,加入小虚竹JAVA微信交流群,一起学习交流进大厂

试试用AI创作助手写篇文章吧