算法系列<二分查找>
阿新 • • 發佈:2018-10-11
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]) { returnmid; } else if (value > table[mid]) { return binarySearch(table, mid + 1, high, value); } else { return binarySearch(table, low, mid - 1, value); } } }else{ return -1; } }
算法系列<二分查找>