标签:
package ch01;
public class MyOrderArray {
private long [] arr;
private int elements;//数组真正的个数
public MyOrderArray(){
arr = new long[50];//默认数组的大小是50
}
public MyOrderArray(int maxsize){
arr = new long[maxsize];
}
//插入元素的方法
public void insert(long value){
int i;
for(i=0;i<elements;i++){
if(arr[i] > value){
break;
}
}
for(int j = elements;j>i;j--){
arr[j] = arr[j-1];
}
arr[i] = value;
elements++;
}
//二分法查找
public int binarySearch(long value){
int low = 0;
int pow = elements;
int middle = 0;
while(true){
middle = (low+pow)/2;
//如果中间的值就是要找的值
if(arr[middle] == value){
return middle;
}else if(low > pow){
return -1;
}else{
if(arr[middle] > value){
pow = middle-1;
}else{
low = middle+1;
}
}
}
}
//显示的方法
public void display(){
System.out.print("[");
for(int i=0;i<elements;i++){
System.out.print(arr[i]+" ");
}
System.out.print("]");
System.out.println();
}
//查找数据的方法,查找数据根据值来查找,返回值的下标
public int search(long value){
int i;
for(i=0;i<elements;i++){
if(arr[i] == value){
break;
}
}
if(i == elements){
return -1;
}else{
return i;
}
}
//查找数据,根据索引返回值
public long get(int index){
//判断数组是不是越界
if(index < 0 || index >= elements){
throw new ArrayIndexOutOfBoundsException("数组越界");
}else{
return arr[index];
}
}
//删除数据
public void delete(int index){
if(index >=elements || index < 0){
throw new ArrayIndexOutOfBoundsException("数组越界");
}else{
for(int i=index;i<elements;i++){
arr[index] = arr[index+1];
}
//数组的长度--
elements--;
}
}
//更新数据
public void change(int index,int newvalue){
if(index >= elements || index < 0) {
throw new ArrayIndexOutOfBoundsException();
} else {
arr[index] = newvalue;
}
}
}
标签:
原文地址:http://www.cnblogs.com/aicpcode/p/4277026.html