123,647
社区成员
发帖
与我相关
我的任务
分享
题目:泛型是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));
}
}