public int binarySearch()

in orderbook-core/src/main/java/com/epam/deltix/orderbook/core/impl/AbstractL2MarketSide.java [107:151]


    public int binarySearch(final Quote find) {
        int low = 0;
        int high = data.size() - 1;

        Quote quote;
// TODO Refactor
//        while (low <= high) {
//            int mid = (low + high) >>> 1;
//            quote = data.get(mid);
//            int cmp = (getSide() == QuoteSide.ASK
//                    ? 1
//                    : -1) * find.compareTo(quote);    // isOffer ? midVal - price : price - midVal;
//
//            if (cmp < 0) {
//                low = mid + 1;
//            } else if (cmp > 0) {
//                high = mid - 1;
//            } else {
//                return (short) mid;                                                    // price found
//            }
//        }
        while (low <= high) {
            final int mid = (low + high) >>> 1;
            quote = data.get(mid);

            final int cmp = quote.compareTo(find);

            if (cmp < 0) {
                if (getSide() == QuoteSide.BID) {
                    high = mid - 1;
                } else {
                    low = mid + 1;
                }
            } else if (cmp > 0) {
                if (getSide() == QuoteSide.BID) {
                    low = mid + 1;
                } else {
                    high = mid - 1;
                }
            } else {
                return mid;
            }
        }
        return NOT_FOUND;
    }