基本数据结构复习


package jxau.blueDot.lyx;

/**
 * 
 * @author lyx
 *	@下午2:55:32
 * @TODO:
 * 	数组插入方法
 */

/**
 * 插入算法的时间分析
 * 	设n  = right - left +1是数组o[left...right]的长度,那么插入的位置可能是
 * left到right之间,对应的复制次数在n-1到0之间,并且这些复制次数构成一个等差级数
 * 平均复制次数=(n-1)/2 ,所以数组插入算法的时间代价是O(n)
 * 
 */
public class ArrayInsert {

	/**
	 * 
	 * @void
	 * @param o  传入一个数组对象
	 * @param left	数组左边下标(下界)
	 * @param right 数组右边下标(上界)
	 * @param val 插入元素的值
	 * @param pos 所要插入的位置
	 */
	static void insert(Object o[] , int left , int right , Object val , int pos){
		
		//插入位置越界判断
		if(pos < left || pos > right){
			
			throw new IllegalStateException();
			
		}
		
		//数组元素的右移复制
		for(int i = right ;i >pos ; i--){
			
			o[i] = o[i-1];
			
		}
		
		o[pos] = val ; 
		
		/*
		for(int i=0;i<o.length;i++){
			System.out.println(o[i]);
		}
		*/
	}
	
}

注意:最后一个元素将会被覆盖。

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