日期:2014-05-20 浏览次数:20757 次
public class Keyword { public static void main(String args[]) { String Keywords[] = { "abstract", "assert", "break", "byte", "case", "catch", "char", "class", "continue", "default", "do" }; Arrays.sort(Keywords); System.out.println(Arrays.toString(Keywords)); String key = "youcan"; int result = binarySearch(Keywords ,key); if(result == -1)System.out.println("不存在"); else System.out.println("在第" + result +"个位置上"); } /** * 在字符串数组中(已经按字典顺序升序排序),查找指定的字符串 * 如果存在,返回数组下标,否则返回-1 * @param keywords * @param key * @return */ public static int binarySearch(String keywords[] , String key){ if(keywords == null || key == null) return -1; int left = 0; int right = keywords.length -1; while(left<=right){ int mid =(left + right)/2 ; String temp =keywords[mid]; if(temp.equals(key)) return mid; if(temp.compareTo(key) < 0) left = mid + 1; else right = mid-1; } return -1; } }
------解决方案--------------------
int result = Arrays.binarySearch(Keywords ,key);
------解决方案--------------------
Arrays.binarySearch()使用错误
------解决方案--------------------
同意一楼的方法。
输出数组需要循环遍历数组,搜索数组中的元素,返回值为int型,根据不同的key,获得不同的结果!
int result = Arrays.binarySearch(Keywords ,key);