题目:
- 给定一个有序一维字符串数组,自行实现二分查找,求给定字符串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