05-天亮大数据经典JavaSe笔试题系列之二分查找的普通与泛型实现

题目:

  • 给定一个有序一维字符串数组,自行实现二分查找,求给定字符串str是否在该数组中?
    • 普通实现(非泛型)
package com.tl.job005.search;
//一般二分查找的算法实现
public class BinarySearchTest  {
   // 对整数一维数组的二分查找实现
   public static int  binarySearch4Int(int[]  intArray, int low, int high,
        int target) {
     if (low > high) {
        return -1;
     }
     int mid = (low + high) /  2;
     if (target >  intArray[mid]) {
        low = mid + 1;
        return  binarySearch4Int(intArray,  low, high, target);
     } else if (target <  intArray[mid]) {
        high = mid - 1;
        return  binarySearch4Int(intArray,  low, high, target);
     }
     return mid;
   }
   // 改编成对字符串类型的二分查找
   public static int  binarySearch4String(String[]  stringArray, int low,
        int high, String  target) {
     if (low > high) {
        return -1;
     }
     int mid = (low + high) /  2;
     int status =  target.compareTo(stringArray[mid]);
     if (status > 0) {
        low = mid + 1;
        return  binarySearch4String(stringArray, low, high, target);
     } else if (status < 0) {
        high = mid - 1;
        return  binarySearch4String(stringArray, low, high, target);
     }
     return mid;
   }
   public static void  main(String[] args) {
     // int[] intArray = { 1,  3, 5, 7, 11 };
     // int target = 11;
     String[] stringArray = {  "1", "3", "5", "7", "11" };
     String target = "5";
     System.out.println(binarySearch4String(stringArray, 0,  stringArray.length - 1,
          target));
   }
}
  • 泛型实现
package com.tl.job005.search;
import java.util.HashSet;
import java.util.Set;
/**
* 范型实现的二分查找
* @author zel
*
* @time:2019年3月20日
*/
public class  BinarySearch4Generic<T extends  Comparable<T>> {
   // 改编成对字符串类型的二分查找
   public int binarySearch(T[]  tArray, int low,
        int high, T target) {
     if (low > high) {
        return -1;
     }
     int mid = (low + high) /  2;
     int status =  target.compareTo(tArray[mid]);
     if (status > 0) {
        low = mid + 1;
        return  binarySearch(tArray, low,  high, target);
     } else if (status < 0) {
        high = mid - 1;
        return  binarySearch(tArray, low,  high, target);
     }
     return mid;
   }
   public static void  main(String[] args) {
     Integer[] intArray = { 1,  3, 5, 7, 11 };
     int target = 11;
//   String[] stringArray = {  "1", "3", "5", "7", "11" };
//   String target = "5";
     
     BinarySearch4Generic<Integer>  binarySearchUtil=new  BinarySearch4Generic<Integer>();
     System.out.println(binarySearchUtil.binarySearch(intArray,  0, intArray.length - 1,
          target));
     
     Set<String> ss=new  HashSet<String>();
   }
}


天亮教育是一家从事大数据云计算、人工智能、教育培训、产品开发、咨询服务、人才优选为一体的综合型互联网科技公司。
公司由一批BAT等一线互联网IT精英人士创建,
以"快乐工作,认真生活,打造IT职业技能教育的一面旗帜"为愿景,胸怀"让天下没有难找的工作"使命,
坚持"客户第一、诚信、激情、拥抱变化"的价值观,
全心全意为学员赋能提效,践行技术改变命运的初心。

更多学习讨论, 请加入
官方-天亮大数据交流-366784928
群二维码:
这里写图片描述
官方-天亮web前端交流-972788995
群二维码:
在这里插入图片描述

欢迎关注天亮教育公众号,大数据技术资料与课程、招生就业动态、教育资讯动态、创业历程分享一站式分享,官方微信公众号二维码:
在这里插入图片描述

天亮教育大数据官方群318971238,
天亮教育web前端官方群318971238,
爬虫、nlp技术qq群320349384
hadoop & spark & hive技术群297585251
教育培训官网:http://myhope365.com
项目研发业务尚云科技官网:http://shangyuninfo.com/
天亮教育公开课-从小白到大佬修成记-全系列视频地址:http://myhope365.com/news/index?id=66

猜你喜欢

转载自blog.csdn.net/erliang20088/article/details/89634671