二分查找

2019-06-25  本文已影响0人  激扬飞雪
package com.data.cn;

import com.sun.org.apache.regexp.internal.RE;

/**
 * Created by kaily on 17/5/9.
 */

public class ArrayList {
    private final static int ARRAY_MAX_LENGTH = 10;
    private int array[];
    private int num;

    public ArrayList() {
        array = new int[ARRAY_MAX_LENGTH];
    }

    public int find(int value) {

        for (int i = 0; i < num; i++) {
            if (array[i] == value) {
                return i;
            }
        }
        return -1;
    }

    public int findByOrder(int value) {
        int down = 0;
        int up = num;
        while (true) {
            int curI = (down + up) / 2;
            if (down > up) {
                return num;
            }
            if (array[curI] == value) {
                return curI;
            } else if (array[curI] < value) {
                down = curI + 1;
            } else {
                up = curI - 1;
            }
        }

    }

    public int delete(int value) {
        int index = find(value);
        if (index == -1) {
            return index;
        } else {
            for (int i = index; i < num; i++) {
                array[i] = array[i + 1];
            }
            num--;
        }
        return index;
    }

    public int addByOrder(int value) {
        if (num == ARRAY_MAX_LENGTH) {
            return -1;
        }

        int index = 0;
        boolean isSearch = false;
        for (int i = 0; i < num; i++) {
            if (array[i] > value) {
                index = i;
                isSearch = true;
                break;
            }
        }

        if (isSearch) {
            for (int i = num; i > index; i--) {
                array[i] = array[i - 1];
            }
            array[index] = value;
        } else {
            array[num] = value;
        }


        num++;
        return num - 1;
    }

    public int add(int value) {
        if (num == ARRAY_MAX_LENGTH) {
            return -1;
        }
        array[num] = value;
        num++;
        return num - 1;
    }

    public int get(int index) {
        if (index >= num) {
            return -1;
        }

        return array[index];
    }

    public int size() {
        return num;
    }
}
上一篇下一篇

猜你喜欢

热点阅读