数组
//创建数组
int[] arr=new int[10];
//初始化
long[] ar=new long[]{2,3,4};
java自带ArrayList(线性表)
自定义数组类,实现添加数据、显示数据、线性查找数据、删除数据、更新数据
/*
* 数组:线性表
*/
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++)
{
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){
return -1;
}
else
return arr[index];
}
/*
* 删除数据
*/
public void delete(int index){
if(index>=elements||index<0){
return ;
}
for(int i=index;i<elements-1;i++){
arr[index]=arr[index+1];
}
elements--;
}
/*
* 更新数据
*/
public void change(int index,int newvalue){
if(index>=elements||index<0){
return ;
}
else
arr[index]=newvalue;
}
}
有序数组
添加数据时要保证有序、有序数组可以采用二分查找
/*
* 有序数组
*/
public class MyOrderArray {
private long[] arr;
//表示有效数据的长度
private int elements;
public MyOrderArray(){
arr=new long[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;
}
elements++;
for(int j=elements-1;j>i;j--){
arr[j]=arr[j-1];
}
arr[i]=value;
}
/*
* 在有序数组中可以采用二分查找
*/
public int binarySearch(long value){
int middle=0;
int start=0;
int end=elements;
while(true){
middle=(start+end)/2;
if(arr[middle]==value)
return middle;
else if(start>end){
return -1;
}
else if(arr[middle]>value)
end=middle-1;
else
start=middle+1;
}
}
}
测试类
public class TestMyArray {
public static void main(String[] args) {
// TODO Auto-generated method stub
MyArray arr=new MyArray();
arr.insert(13);
arr.insert(34);
arr.insert(90);
arr.display();
System.out.println(arr.search(34));
System.out.println(arr.get(2));
//arr.delete(1);
arr.change(0, 5);
arr.display();
MyOrderArray arr2=new MyOrderArray();
arr2.insert(100);
arr2.insert(34);
arr2.insert(20);
arr2.display();
System.out.println(arr2.binarySearch(100));
}
}