java数据结构 数组与有序数组

来源:互联网 发布:Win apache cgi 配置 编辑:程序博客网 时间:2024/05/14 17:53

数组

//创建数组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;}elsereturn 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;elsestart=middle+1;}}}

测试类

public class TestMyArray {public static void main(String[] args) {// TODO Auto-generated method stubMyArray 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));}}


0 0