1. 程式人生 > >算法系列<二分查找>

算法系列<二分查找>

style value 實現 bsp 序表 binarys search [] 排好序

二分查找又稱折半查找,是針對有序順序表的查找,前提:數據是順序存儲的,已經按照關鍵詞進行升序排序。查找成功返回索引值,查找不成功返回-1。

下面用java來實現二分查找算法:

/**
     * 二分查找:針對已排好序的序列,查找成功返回所在位置的索引值,查找不成功返回-1
     * 查找的最好時間復雜度:O(1),最壞時間復雜度O(logN),平均時間復雜度:O(logN)
     * 測試case:
     * case1:{1} 查找1
     * case2:{1} 查找2
     * case3:{} 查找1
     * case4:{1,2,3} 查找2
     * case5:{1,2,3} 查找1
     * case6:{1,2,3} 查找3
     * case7:{1,2,3} 查找8
     * case8:{4,5,6} 查找1
     * 
@param table 在table數組裏面查找,table數組中的數據是按照從小到大排序的,有序順序表 * @param low 查找下界 * @param high 查找上界 * @param value 要查找的值 * @return */ public int binarySearch(int[] table,int low,int high,int value){ if(table.length>0&&low>=0&&low<table.length&&high>=0&&high<table.length&&low<=high) {
if (low == high) { if (value == table[low]) { return low; } else { return -1; } } else { int mid = (low + high) / 2; if (value == table[mid]) { return
mid; } else if (value > table[mid]) { return binarySearch(table, mid + 1, high, value); } else { return binarySearch(table, low, mid - 1, value); } } }else{ return -1; } }

算法系列<二分查找>