查找算法Java实现

来源:互联网 发布:java工作流视频教程 编辑:程序博客网 时间:2024/05/21 09:04
package meify.query;




/**
 * @description  查找demo
 * @version 1.0
 * @author meify  2013-8-1 上午9:55:11 
 */
public class QueryDemo {


/**
* 顺序查找
* @param array
* @param n
* @return
* @version 1.0
* @description 最基本简单的查找,一一比对
* @author meify  2013-8-1 上午10:00:58
*/
public int seqSearch(int[] array,int n){
int len=array.length;
int index=-1;
for(int i=0;i<len;i++){
if(array[i]==n){
index=i;
break;
}
}
return index;
}

/**
* 折半查找
* @param array
* @param n
* @return
* @version 1.0
* @description 首先,假设表中元素是按升序排列,将表中间位置记录的关键字与查找关键字比较,
* 如果两者相等,则查找成功;否则利用中间位置记录将表分成前、后两个子表,
* 如果中间位置记录的关键字大于查找关键字,则进一步查找前一子表,否则进一步查找后一子表。
* 重复以上过程,直到找到满足条件的记录,使查找成功,或直到子表不存在为止,此时查找不成功。
* @author meify  2013-8-1 上午10:01:47
*/
public int binSearch(int[] array,int n){
int index=-1;
int p=array.length/2;
while(p<array.length&&p>-1){
if(array[p]==n){
index=p;
break;
}
if(n<array[p]){
p=(0+p)/2;
}
if(n>array[p]){
p=(p+array.length)/2;
}
}
return index;
}

public static void main(String[] args) {
int[] arr={1,2,5,8,10,14,15,18};
QueryDemo demo=new QueryDemo();
int index=demo.binSearch(arr, 5);
System.out.println("5的位置是"+index);
}

}
原创粉丝点击