折半查找
只适用于有序表,且限于顺序存储结构
public class BinarySearch {
public static void main(String[] args) {
int arr[]= {1,2,3,4,5,6};
int index=BinarySearch(arr,1);
System.out.println(index);
}
public static int BinarySearch(int[]arr,int target)
{
int left=0,right=arr.length-1;
while(left<=right)
{
int mid=(left+right)/2;
if(arr[mid]==target)
{
return mid;
}else if(arr[mid]>target)
{
right=mid-1;
}else {
left=mid+1;
}
}
return -1;
}
}
复制代码
串匹配-BF
public class BF {
/**
* @param S 主串
* @param T 模式串
* @param pos 搜索起始位置
* @return 匹配成功,返回匹配起始位置; 失败,返回-1
*/
public static int find(String S,String T,int pos){
char[] s = S.toCharArray();
char[] t = T.toCharArray();
int i=pos,j=0;
for (;i<s.length&&j<t.length;){
if (s[i]==t[j]){
i++;
j++;
}else {
i=i-j+1; //核心
j=0;
}
}
if(j==t.length){
return i-j;
}
return -1;
}
public static void main(String[] args) {
String S="abcccds";
String T="cds";
int i = BF.find(S, T, 0);
System.out.println(i);
}
}
复制代码