Java 二分搜尋法(Binary Search)

1. 摘要
2. Java Binary Search 內部程式碼
3. Java Binary Search Collections用法
4. 強硬搜尋方式
5. 使用方法

摘要

參考資料:維基百科

優點:搜尋效率佳

缺點:必須事先排序、資料必需使是可直接存

Java Binary Search 內部程式碼

public boolean reverseItem(String number) {
    int low = 0;
    int high = list.size()-1;
    while(low <= high) {
        System.out.print(".");
        int mid = (low + high) / 2;
        Item midVal = list.get(mid);
        int cmp = midVal.getNumber().compareToIgnoreCase(number);

        if(cmp < 0) {
            low = mid + 1;
        } else if(cmp > 0) {
            high = mid - 1;
        } else {
            return list.get(mid).reserve();
        }
    }
    System.out.println("There is no item " + number);
    return false;
}

public boolean reserve() {
    if(!this.reserved) {
        this.reserved = true;
        return true;
    } else {
        return false;
    }
}

Java Binary Search Collections用法

public boolean reverseItem(String number) {
    Item requestItem = new Item(number);
    int foundItem = Collections.binarySearch(list, requestItem, null);
    if(foundItem >= 0) {
        return list.get(foundItem).reserve();
    } else {
        System.out.println("There is no item " + number);
        return false;
    }
}

強硬搜尋方式

public boolean reverseItem(String number) {
    Item requestedItem = null;
    for(Item item: list) {
        System.out.print(".");
        if(seat.getNumber().equals(number)) {
            requestedItem = item;
            break;
        }
    }
    if(requestedItem == null) {
        System.out.println("There is no item " + number);
        return false;
    }
    return requestedItem.reserve();
}

使用方法

if(data.reverseSeat("D12")) {
    System.out.println("Found");
} else {
    System.out.println("Not found");
}

相關文章

二元搜尋樹(Binary Search Tree)
1. 摘要
2. 搜尋資料
3. 新增資料
4. 刪除資料
5. 遍歷資料

訂閱Codeilin的旅程,若有最新消息會通知。

廣告

發表迴響

在下方填入你的資料或按右方圖示以社群網站登入:

WordPress.com 標誌

您的留言將使用 WordPress.com 帳號。 登出 /  變更 )

Twitter picture

您的留言將使用 Twitter 帳號。 登出 /  變更 )

Facebook照片

您的留言將使用 Facebook 帳號。 登出 /  變更 )

連結到 %s

WordPress.com.

向上 ↑

%d 位部落客按了讚: