数据结构---Java---有序数组

【自定义有序数组】

  insert:要插入的value与数组中每个元素进行比较,当有值>value时,此处的index之后的元素整体后移,index位置赋新值;

package com.exiuge.mytest.array;

public class MyOrderArray {

    private long[] arr;
    /**
     * 实际数组元素大小
     */
    private int elementsSize;
    /**
     * 初始容量50
     */
    private static final int initSize=50;

    public MyOrderArray(){
        arr=new long[initSize];
    }

    /**
     * insert
     * @param value
     */
    public void insert(long value){
        if (elementsSize>=initSize){
            throw new ArrayIndexOutOfBoundsException();
        }
        int i;
        for (i=0;i<elementsSize;i++){
            if (arr[i]>value){
                break;
            }
        }
        for (int j=elementsSize;j>i;j--){
            arr[j]=arr[j-1];
        }
        arr[i]=value;
        elementsSize++;
    }

    /**
     * 展示全部
     */
    public void display(){
        System.out.println("[");
        for (int i=0;i<elementsSize;i++){
            System.out.print(arr[i]+" ");
        }
        System.out.println("]");
    }

    /**
     * 根据value找下标索引
     * @param value
     * @return
     */
    public int findByValue(long value){
        int i;
        for (i=0;i<elementsSize;i++){
            if (arr[i]==value){
                break;
            }
        }
        if (i==elementsSize){
            return -1;
        }else {
            return i;
        }
    }

    /**
     * 根据下标索引找value
     * @param index
     * @return
     */
    public long findByIndex(int index){
        if (index>=elementsSize || index<0){
            throw new ArrayIndexOutOfBoundsException();
        }else {
            return arr[index];
        }
    }

    /**
     * 根据下标索引删除value
     * @param index
     */
    public void deleteByIndex(int index){
        if (index>=elementsSize || index<0){
            throw new ArrayIndexOutOfBoundsException();
        }else {
            for (int i=index;i<elementsSize;i++){
                arr[index]=arr[index+1];
            }
            elementsSize--;
        }
    }

    /**
     * 根据下标索引进行修改value
     * @param index
     * @param newValue
     */
    public void updateByIndex(int index,long newValue){
        if (index>=elementsSize || index<0){
            throw new ArrayIndexOutOfBoundsException();
        }else {
            arr[index]=newValue;
        }
    }

}

猜你喜欢

转载自www.cnblogs.com/anpeiyong/p/10481870.html