类
public class OrderArray {
private long[] a;
private int nElems;
public OrderArray(int max){
a=new long[max];
nElems=0;
}
public int size(){
return nElems;
}
//线性查找
public void insert(long value){
int j;
for(j=0;j<nElems;j++)
if(a[j]>value) break;
for(int k=nElems;k>j;k--)
a[k]=a[k-1];
a[j]=value;
nElems++;
}
//二分查找
public int find(long searchKey){
int lowerBound=0;
int upperBound=nElems-1;
int curIn;
while(true){
curIn=(lowerBound+upperBound)/2;
if(a[curIn]==searchKey)
return curIn;
else if(lowerBound>upperBound)//没有找到
return nElems;//返回大于最大索引整数
else{
if(a[curIn]<searchKey)
lowerBound=curIn+1;
else
upperBound=curIn-1;
}
}
}
public boolean delete(long value){
int j=find(value);
if(j==nElems){
return false;
}else{
for(int k=j;k<nElems;k++){
a[k]=a[k+1];
}
nElems--;
return true;
}
}
public void display(){
for(int i=0;i<nElems;i++){
System.out.print(a[i]+" ");
}
System.out.println();
}
}
主程序
public class OrderedApp {
public static void main(String[] args){
int maxSize=100;
OrderArray array;
array=new OrderArray(maxSize);
array.insert(77);
array.insert(99);
array.insert(44);
array.insert(55);
array.insert(22);
array.insert(88);
array.insert(11);
array.insert(0);
array.insert(66);
array.insert(33);
int searchKey=55;
if(array.find(searchKey)!=array.size())
System.out.println("找到了"+searchKey);
else System.out.println("没找到"+searchKey);
array.display();
array.delete(0);
array.delete(55);
array.delete(99);
array.display();
}
}