在数组,通过二分法插入数据

上一篇 / 下一篇  2012-05-24 22:15:52 / 个人分类:java

package xiti;

class ti3
{
 int[] arr;  //要排列的数据
 int no;  //存在数据的个数
 ti3(int n)
 {
  arr=new int[n];
  no=0;
 }
 void insert(int value,int lowBound, int upperBound)
 {
  //数据为空的时候插入数据
  if(no==0){arr[0]=value;no++; return ;}
  
  //插入的数据 比最大的数据还大
  if(value>=arr[no-1]){arr[no]=value;no++;return ;}
  
  //插入的数据 比最小的数据还小
  if(value<=arr[0]){
   for (int i=no;i>0;i--)
   {
    arr[i]=arr[i-1];
    
   }
   arr[0]=value;
   no++;
   return ;
   }
  
  
  //插入的数据 鉴于原来数据的最大数值和最小数值之间
  int mid = (upperBound+lowBound)/2;
  if((arr[mid-1]<=value)&& (value<arr[mid])){
   
   for (int i=no;i>mid;i--)
   {
    arr[i]=arr[i-1];
    
   }
   arr[mid]=value;
   
   no++;
   return ;
  }
   
  if(value>=arr[mid])
   insert(value, mid+1,  upperBound);
  else
   insert(value, lowBound,  mid);
   
  
 }
 //显示数据
 void display()
 {
  
  for(int i=0 ;i<=no;i++)
   System.out.print(arr[i]+"\n");
 }
}


TAG:

 

评分:0

我来说两句

Open Toolbar