无序数组的实现

纯粹是复习数据结构

/**
 * 无序数组的实现
 * User: sunlong
 * Date: 13-10-22
 * Time: 下午2:38
 */
public class MyArray {
    private int[] data;
    private int index = -1;

    public MyArray(int size){
        if(size < 1){
            throw new RuntimeException("size must be larger than 1");
        }
        data = new int[size];
    }

    /**
     * 插入的时间是一常数
     * 时间复杂度 O(1)
     * @param value
     */
    public void insert(int value) {
        if(index == data.length){
            throw new RuntimeException("array is full");
        }
        data[++index] = value;
    }

    /**
     * 删除需要先找到对象平均是N/2,同时需要移动空间也是N/2,整体上时间复杂度O(n)
     * @param value
     */
    public void delete(int value){
        int i=0;
        for (; i<=index; i++) {
            if(data[i] == value){
                break;
            }
        }
        for(int j=i; j<=index-1; j++){
            data[j] = data[j+1];
        }
        index--;
    }

    /**
     * 返回索引
     * 线性查找 时间复杂度O(n)
     * @param value
     * @return
     */
    public int find(int value){
        for (int i=0; i<=index; i++) {
            if(data[i] == value){
                return i;
            }
        }
        return -1;
    }

    public void print(){
        System.out.println("-------------------");
        for (int i=0; i<=index; i++) {
            System.out.println(data[i]);
        }
        System.out.println("-------------------");
    }

}

class MyArrayTest{
    public static void main(String[] args){
        MyArray array = new MyArray(10);

        array.insert(5);
        array.insert(4);
        array.insert(6);
        array.insert(3);
        array.insert(1);
        array.insert(2);
        array.insert(8);
        array.insert(10);
        array.insert(9);
        array.insert(7);

        array.print();

        System.out.println(array.find(5));
        System.out.println(array.find(8));
        System.out.println(array.find(11));

        array.delete(8);
        array.insert(11);
        array.print();
    }
}

猜你喜欢

转载自sunlong.iteye.com/blog/1962351