一串字符串中每一个字符对应的 ascii 码值存入一个整形数组中,并提示用户输入一个字符,通过“折半检索”的方法判断输入字符对应的 ascii 码值是否在数组中。
折半查找的前提必须排好序的。
网上找个二分法搜索就行了。
如有帮助,请点击我这个回答右上角的【采纳】按钮支持一下,谢谢。
代码如下:
import java.util.Arrays;
import java.util.Scanner;
public class SearchTest {
public static void main(String[] args) {
String str="abc123ABC456";
char[] chars = str.toCharArray();
int nums[]=new int[chars.length];
for (int i=0;i<chars.length;i++) {
nums[i]=chars[i];
}
Arrays.sort(nums);
System.out.println("请输入一个字符:");
Scanner in=new Scanner(System.in);
String ch = in.next();
int result=binarySearch(nums,ch.toCharArray()[0]);
System.out.println(result==-1?"不在数组中":"在数组中");
}
public static int binarySearch(int[] arr, int findElem) {
int low = 0;
int high = arr.length - 1;
int mid;
while (low <= high) {
mid = (low + high) / 2;
if (findElem < arr[mid]) {
high = mid - 1;
}
if (findElem > arr[mid]) {
low = mid + 1;
}
if (arr[mid] == findElem) {
return mid;
}
}
return -1;
}
}