Java数据结构与算法《一》数组

来源:互联网 发布:我叫阿里木电影百度云 编辑:程序博客网 时间:2024/05/15 00:34

面向对象实现数组

使用自定义类来封装数组,添加对数组的操作

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.println("[");        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 value){        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 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;            }        }        for(int j=elements;j>i;j--){            arr[j]=arr[j-1];        }        arr[j]=value;        elements++;    }    //显示数据    public void display(){        System.out.println("[");        for(int i=0;i<elements;i++){            System.out.print(arr[i]+",");        }        System.out.println("]");    }    //查找数据    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 int binaySearch(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;                }            }        }    }    //查找数据 根据索引    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=0;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;        }    }}
0 0
原创粉丝点击