Java数组-自定义基类
此类可以实现以下功能:添加数据、显示数据、查找数据返回索引、根据索引返回对应的数组值、删除数据、更新数据、顺序添加数据以及数组的二分查找返回索引的功能。
public class MyArray {
private long[] arr;
//表示有效的数据长度
private int elements;
public MyArray(){
arr = new long[50];
}
public MyArray(int maxsize){
arr = new long[maxsize];
}
/**
* 添加数据
* */
public void insert(long value){
arr[elements] = value;
elements++;
}
/**
* 显示数据
*/
public void display(){
System.out.print("[");
for(int i = 0 ; i < elements; i++){
if(i<elements-1){
System.out.print(arr[i]+",");
}else {
System.out.print(arr[i]);
}
}
System.out.print("]");
}
/**
* 查找数据返回索引
*/
public int search(long value){
int i;
for( i = 0 ; i < elements ; i++){
if(value == arr[i]){
break;
}
}
if(i == elements){
return -1;
}else {
return i;
}
}
/**
* 根据索引查找数据
*/
public long get(int index){
if(index >= elements || index < 0){
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;
}
}
/**
* 顺序添加数据
*/
public void insert_sort(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 binarySerach(long value){
int middle = 0;
int low = 0;
int pow = elements;
while (true){
middle = (pow + low) / 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;
}
}
}
}
}