二分查找又称为折半查找,优点是比较次数少,查找速度快,平均性能好;其缺点是要求待查表为有序表,且插入删除困难。因此,折半查找方法适用于不经常变动而查找频繁的有序列表。
Java编程实例:
二分查找字符串中指定关键字
使用随机函数生成10个值,然后通过而二分查找法判断用户输入的数字是否在该字符串中。
package com.cr.instance;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Scanner;
/*
Java编程实例:二分查找字符串中指定关键字
使用随机函数生成10个值,然后通过而二分查找法判断用户输入的数字是否在该字符串中。
*/
public class binSearch { //创建二分查找类
public static void main(String[] args) {
ArrayList<Integer> ls = new ArrayList<Integer>();//创建一个Integer类型的ArrayList列表
Integer key;
Scanner in = new Scanner(System.in);
boolean goon = true;
int index;
for (int i = 0; i < 10; i++)
ls.add((int) (Math.random() * 1000));
Collections.sort(ls);
System.out.println("已排序的数据是:");
showList(ls);
System.out.println("请输入你要查找的关键字,小于等于0表示结束:");
while (goon) {
System.out.println("请输入你要查找的关键字:");
key = in.nextInt();
if (key > 0) {
index = Collections.binarySearch(ls, key);
if (index >= 0)
System.out.println("查找成功,在" + index + "号位置");
else
System.out.println("没有找到" + key);
} else
goon = false;
}
in.close();
}
public static void showList (ArrayList < Integer > ls) {
for (Integer elem : ls)
System.out.println(elem + " ");
System.out.println();
}
}