在数组,通过二分法插入数据
上一篇 /
下一篇 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: