//有序数组
public class OrdArray
{
private double[] array;
private int nElmes;
//构造函数
public OrdArray(int max)
{
array = new double[max];
nElmes = 0;
}
//元素个数
public int size()
{
return nElmes;
}
//二分法查找元素
public int find(double value)
{
int lowIndex = 0;
int upIndex = nElmes-1;
int curIn;
while(true){
curIn = (lowIndex+upIndex)/2;
if(array[curIn]==value)
return curIn;
else if(lowIndex>upIndex){
return -1;
}
else{
if(value>array[curIn])
lowIndex = curIn+1;
else
upIndex= curIn-1;
}
}
}
//插入元素
public void insert(double value){
int i;
for(i=0;i<nElmes;i++){
if(array[i]>value)
break;
}
for(int j=nElmes;j>i;j--){
array[j]=array[j-1];
}
array[i] = value;
nElmes++;
}
//删除元素
public boolean delete(double value){
int i = find(value);
if(i==-1)
return false;
else
for(int j=i;j<nElmes;j++)
array[j] = array[j+1];
nElmes--;
return true;
}
//显示所有元素
public void display()
{
for(int i=0;i<nElmes;i++){
System.out.print(array[i]+" ");
}
System.out.println();
}
}
public class OrdArray
{
private double[] array;
private int nElmes;
//构造函数
public OrdArray(int max)
{
array = new double[max];
nElmes = 0;
}
//元素个数
public int size()
{
return nElmes;
}
//二分法查找元素
public int find(double value)
{
int lowIndex = 0;
int upIndex = nElmes-1;
int curIn;
while(true){
curIn = (lowIndex+upIndex)/2;
if(array[curIn]==value)
return curIn;
else if(lowIndex>upIndex){
return -1;
}
else{
if(value>array[curIn])
lowIndex = curIn+1;
else
upIndex= curIn-1;
}
}
}
//插入元素
public void insert(double value){
int i;
for(i=0;i<nElmes;i++){
if(array[i]>value)
break;
}
for(int j=nElmes;j>i;j--){
array[j]=array[j-1];
}
array[i] = value;
nElmes++;
}
//删除元素
public boolean delete(double value){
int i = find(value);
if(i==-1)
return false;
else
for(int j=i;j<nElmes;j++)
array[j] = array[j+1];
nElmes--;
return true;
}
//显示所有元素
public void display()
{
for(int i=0;i<nElmes;i++){
System.out.print(array[i]+" ");
}
System.out.println();
}
}