经典算法介绍:二分查找又称折半查找,优点是比较次数少,查找速度快,平均性能好;其缺点是要求待查表为[b]有序[/b]表,且插入删除困难
折半查找方法适用于[u]不经常变动[/u]而[u]查找频繁[/u]的[b]有序[/b]列表。
首先,假设表中元素是按升序排列,将表中间位置记录的关键字与查找关键字比较,如果两者相等,则查找成功;否则利用中间位置记录将表分成前、后两个子表,如果中间位置记录的关键字大于查找关键字,则进一步查找前一子表,否则进一步查找后一子表。重复以上过程,直到找到满足条件的记录
折半查找方法适用于[u]不经常变动[/u]而[u]查找频繁[/u]的[b]有序[/b]列表。
首先,假设表中元素是按升序排列,将表中间位置记录的关键字与查找关键字比较,如果两者相等,则查找成功;否则利用中间位置记录将表分成前、后两个子表,如果中间位置记录的关键字大于查找关键字,则进一步查找前一子表,否则进一步查找后一子表。重复以上过程,直到找到满足条件的记录
package com.lucene.utils;
import java.util.Scanner;
public class Find {
/**
* 二分查找算法
*/
public static void main(String[] args) {
int[] nums={0,1,2,3,4,5,6,7,8,9};
int start=0,end=nums.length,mid,find;
Scanner scanner=new Scanner(System.in);
System.out.println("请输入要查找的数:");
find=scanner.nextInt();
do{
mid=(start+end)/2;
if(find==nums[mid]){
System.out.println("查找成功!");
break;
}else if(find<nums[mid]){
end=mid-1;
}else if(find>nums[mid]){
start=mid+1;
}
}while(start<=end);
System.out.println("程序结束!");
}
}