您的位置:首页 > 编程语言 > Java开发

【DataStructure&AlgorithmInJava】Ch02-OrderArray w binarySearch

2014-05-03 03:10 507 查看
class OrderArray
{
private int nElems;
private int[] arr;
public OrderArray(int size){
arr=new int[size];
nElems=0;
}
//------***insert for ordered array----------------------------------
public void insert(int value){//----plz remember clearly!------
int i;

for(i=0;i<nElems;i++)	//find the slot
if (value < arr[i])  //----note:<----
break;
for(int k=nElems;i<k;k--) //move larger elements
arr[k]=arr[k-1];        //---note: other loop methods are easy to make an Exception!
arr[i]=value;				// just remember it;
nElems++;//---**--
}
//-----delete-------
public boolean delete(int value){//---note:return boolean--
int i=binarySearch(value);

if (i==-1)
return false;
else{
for(int k=i;k<nElems;k++)
arr[k]=arr[k+1]; //---index out of boundry, problem?
nElems--;
return true;
}
}
//-----binarySearch----
public int binarySearch(int key){
int lowerB=0;
int upperB=nElems-1;
int mid;
while(true)
{
mid=(lowerB+upperB)/2;
if (arr[mid]==key)
return mid;
else if (lowerB>upperB)
return -1;
else{
if (key<arr[mid])
upperB=mid-1;
else
lowerB=mid+1;
}
}
}
//-----get length()----
public int getLength()
{
return nElems;
}
//-----print-----
public void print(){
for(int i=0;i<nElems;i++)
System.out.println("arr["+i+"]="+arr[i]);
}
}
class OrderArrayDemo
{
public static void main(String[] args)
{
int maxSize=100;
OrderArray arr=new OrderArray(maxSize);

arr.insert(7);
arr.insert(1);
arr.insert(13);
arr.insert(110);
arr.insert(10);
arr.print();
System.out.println("array length="+arr.getLength());

arr.delete(110);
arr.print();
System.out.println("array length="+arr.getLength());

System.out.println("index of 10 is:"+arr.binarySearch(10));
arr.print();

}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: