基础数据结构复习

package jxau.blueDot.lyx;

/**
 * 
 * @author lyx
 *	@下午4:12:21
 * @TODO:
 * 	实现有序数组线性查找算法
 */

/**
 * 
 * 线性查找算法时间代价:
 * 	 如果已知数组是有序的,则可以改进线性查找算法,在查找不成功的情况下,一旦发现成员
 * o[i]的值已经大于目标值,搜索过程就可以立即结束了。
 * 	 设n  = right - left +1是数组o[left...right]的长度,如果查找成功,则比较次数可能
 * 在1到n之间,因此平均比较次数=(n+1)/2 ,如果查找不成功,平均起来它只需要无序数组线
 * 性查找算法的一半的比较次数
 */
public class OrderArrayLinearSearch {

	static final int NONE = -1;
	
	static int linearSearch(Comparable o[] , int left , int right , Comparable val){
		
		//线性查找
		for(int i=left ; i<right ; i++){
			
			int comp = val.compareTo(o[i]);

			//说明查找到结果
			if(comp == 0){
				return i;
			//未查找到结果
			}else if(comp < 0){
				break;
			}
			
		}
		
		return NONE;
		
	}
}


你可能感兴趣的:(基础数据结构复习)