回城传送–》《JAVA筑基100例》
文章目录
- 零、前言
- 一、题目描述
- 二、解题思路
- 三、代码详解
- 四、推荐专栏
- 五、示例源码下载
零、前言
今天是学习 JAVA语言 打卡的第66天,每天我会提供一篇文章供群成员阅读( 不需要订阅付钱 ),读完文章之后,按解题思路,自己再实现一遍。在小虚竹JAVA社区 中对应的 【打卡贴】打卡,今天的任务就算完成了。
因为大家都在一起学习同一篇文章,所以有什么问题都可以在群里问,群里的小伙伴可以迅速地帮到你,一个人可以走得很快,一群人可以走得很远,有一起学习交流的战友,是多么幸运的事情。
学完后,自己写篇学习报告的博客,可以发布到小虚竹JAVA社区 ,供学弟学妹们参考。
我的学习策略很简单,题海策略+ 费曼学习法。如果能把这100题都认认真真自己实现一遍,那意味着 JAVA语言 已经筑基成功了。后面的进阶学习,可以继续跟着我,一起走向架构师之路。
一、题目描述
题目:泛型是JAVA重要的特性,使用泛型编程,可以使代码复用率提高。
实现:查找作为泛型的一个简单应用,使用泛型实现折半查找法
二、解题思路
创建一个类:BinSearch。
折半查找要求数据集合中的元素必须可比较,并且各元素按升序或降序排列。取集合的中间元素作为比较对象,如:
(1)如果给定的值与比较对象相等,则查找成功,返回中间元素的序号。
(2)如果给定的值大于比较对象,则在中间元素的右半段进行查找。
(3)如果给定的值小于比较对象,则在中间元素的左半段进行查找。
三、代码详解
package com.xiaoxuzhu;
import java.util.Arrays;
/**
* Description:
*
* @author xiaoxuzhu
* @version 1.0
*
*
* 修改记录:
* 修改后版本 修改人 修改日期 修改内容
* 2022/5/10.1 xiaoxuzhu 2022/5/10 Create
*
* @date 2022/5/10
*/
public class BinSearch {
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, 3));
}
}