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 int find(long searchKey){
int beginIndex = 0;
int endIndex = nElems - 1;
int center;
while (true){
center = (beginIndex + endIndex)/2;
if(a[center] == searchKey)
return center;
else if(beginIndex > endIndex){
return nElems;
}else {
if(a[center] < searchKey)
beginIndex = center + 1;
else
endIndex = center - 1;
}
}
}
public boolean insert(long value){
nElems = find(value);
if(nElems == 0 || value > a[nElems - 1]){
a[nElems] = value;
nElems++;
return true;
}
if(value < a[0]) {
for (int k = nElems; k > 0; k--)
a[k] = a[k - 1];
a[0] = value;
nElems++;
return true;
}
int beginIndex = 0;
int endIndex = nElems - 1;
int center;
while (true){
center = (beginIndex + endIndex)/2;
if(a[center] < value){
if(a[center + 1] > value){
for(int k = nElems;k > center + 1;k--)
a[k] = a[k - 1];
a[center + 1] = value;
nElems++;
return true;
}else{
beginIndex = center + 1;
}
}else{
endIndex = center;
}
}
}
public boolean delete(long value){
int i = find(value);
if(i == nElems)
return false;
else {
for (; i < nElems; i++)
a[i] = a[i + 1];
nElems--;
return true;
}
}
public void display(){
for(int j = 0;j < nElems;j++)
System.out.print(a[j] + " ");
System.out.println(" ");
}
}
java通过二分法对数组进行高效查找及插入操作
最新推荐文章于 2022-11-16 21:55:19 发布
本文介绍了一个有序数组的Java类实现,包括插入、查找、删除等基本操作。通过二分查找提高搜索效率,并维持数组有序性。

1452

被折叠的 条评论
为什么被折叠?



