【Java】 大话数据结构(10) 查找

本文根据《大话数据结构》一书,实现了Java版的顺序表查找算法

顺序表查找

       顺序查找(Sequential Search):从第一个到最后一个记录依次与给定值比较,若相等则查找成功。

  顺序查找优化:设置哨兵,可以避免每次循环都判断是否越界。在数据量很多时能提高效率。

  时间复杂度:O(n),n为记录的数。

以下为顺序查找算法及其优化的Java代码:

package Sequential_Search;
/**
 * 顺序表查找
 * 数组下标为0的位置不用来储存实际内容
 * @author Yongh
 *
 */
public class Sequential_Search {
	/*
	 * 顺序查找
	 */
	public int seqSearch(int[] arr,int key) {
		int n=arr.length;
		for(int i=1;i<n;i++) {  //i从1开始
			if(key==arr[i])
				return i;
		}
		return 0;
	}
	/*
	 * 顺序查找优化,带哨兵
	 */
	public int seqSearch2(int[] arr,int key) {
		int i=arr.length-1;
		arr[0]=key;  //将arr[0]设为哨兵
		while(arr[i]!=key)
			i--;
		return i;  //返回0说明查找失败
	}
	
	public static void main(String[] args) {
		int[] arr = {0,45,68,32,15};
		Sequential_Search aSearch = new Sequential_Search();
		System.out.println(aSearch.seqSearch(arr, 15));
		System.out.println(aSearch.seqSearch(arr, 45));
	}	
}

 

4
1
Sequential_Search

猜你喜欢

转载自www.cnblogs.com/yongh/p/9232742.html