</pre><pre code_snippet_id="1836872" snippet_file_name="blog_20160817_2_9019752" name="code" class="java">//import java.lang.math.*;
public class OrdArray {
private long[] a;
private int size;
public OrdArray(int value){
a=new long[value];
size=0;
}
public void insert(long value){
int i;
for(i=0;i<size;i++)
if(value<a[i]) break;
for(int j=size;j>i;j--)
a[j]=a[j-1];
a[i]=value;
size++;
}
public int find(long value){
int i=size-1;
int j=0;
int k;
int num=(int) (Math.log(i+1)/Math.log(2));
for(k=0;k<num;k++) { //找到value
if(a[i]==value) {k=i;break;}
else if(a[j]==value) {k=j;break;}
else if(a[i/2]<value) j=i/2;
else if(a[i/2]>value) i=i/2;
else { k=i/2;break;}
}
if(a[k]!=value) System.out.println("error");
else System.out.println("success:"+k);
return k;
}
// public int find(long value){
// int lowbound=0;
// int upperbound=size-1;
// int cut;
// while(true){
// cut=upperbound/2;
// if(a[cut]==value) return cut;
// else if(lowbound>upperbound) return size;
// else {
// if(a[cut]<value) lowbound=cut+1;
// else upperbound=cut-1;
// }
// }
// }
public boolean delete(long value){
int k=find(value);
for(int x=k;x<size-1;x++){
a[x]=a[x+1];
}
size--;
if(k<=size&&k>=0) return true;
else return false;
}
public void display(){
for(int i=0;i<size;i++)
System.out.println(a[i]);
}
}
</pre><pre code_snippet_id="1836872" snippet_file_name="blog_20160817_4_8736344" name="code" class="java">
<pre name="code" class="java">public class OrdArrayApp {
public static void main(String[] arg){
OrdArray arr;
arr=new OrdArray(10);
arr.insert(12);
arr.insert(32);
arr.insert(3);
arr.insert(87);
arr.insert(23);
arr.insert(122);
arr.delete(122);
arr.display();
}
}