查找算法

来源:互联网 发布:北京java认证培训 编辑:程序博客网 时间:2024/05/22 12:12

1、二分查找(折半查找)

public static int binarySearch(int[] array, int key) {int low = 0;int high = array.length - 1;while(low <= high) {int mid = (low + high)/2;if (array[mid] < key) {low = mid + 1;} else if(array[mid] > key) {high = mid -1;} else {return mid;}}return -1;}

2、简单的模式匹配算法

public class Find {public static void main(String[] args) {String str1 = "hellohelloworldworld";String str2 = "helloworld";System.out.println(" " + findIndex(str1, str2));}public static int findIndex(String orgString, String subString) {char[] orgChar = orgString.toCharArray();char[] subChar = subString.toCharArray();int i = 0 ;int j = 0;while(i < orgChar.length && j < subChar.length) {if (orgChar[i] == subChar[j]) {i++;j++;} else {i = i - j + 1;j = 0;}}if (j >= subChar.length) {return i - j + 1;} else {return -1;}}}
最坏的时间复杂度为O(m*n),m,n分别为两个字符串的长度。

3、字符串模式匹配(KMP)

未完待续...

原创粉丝点击