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]);
}
*/
}
}
注意:最后一个元素将会被覆盖。