折半查找法的平均时间复杂度是log2n。
心法领悟190:泛型在数据结构中的应用。
在学习数据结构的过程中,为了理解方便和简化编程,通常都使用整数作为分析的对象。利用Java的泛型机制,只需要将int替换成泛型类型T就可以实现更加通用的算法。这样就不需要再对不同的数据类型编写不同的算法实现。
提示:Java SE API (java.util.Arrays)中已经实现了优化了的折半查找算法,实际编程中推荐大家使用。
package com.mingrisoft.generic; import java.util.Arrays; public class BinSearch { public static <T extends Comparable<? extends 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)); } }
Result:
数据集合: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] 被查找的中间值: 5 2 元素3所对应的索引序号:2
相关推荐
实例190 泛型化的折半查找法 241 第9章 编程常用类 343 9.1 Calendar类的使用 244 实例191 简单的数字时钟 244 实例192 简单的电子时钟 245 实例193 简单的模拟时钟 246 实例194 简单的公历万年历 248 实例195 查看...