《数据结构与算法》学习笔记3 有序数组与二分查找

来源:互联网 发布:西部世界阿诺德 知乎 编辑:程序博客网 时间:2024/06/05 14:41
</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++) {   //找到valueif(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(); }}



0 0
原创粉丝点击