BINARY_SEARCH

来源:互联网 发布:教务管理信息系统优化 编辑:程序博客网 时间:2024/04/28 07:13
public class BINARY_SEARCH {   /**     * 二分查找算法     *     *  srcArray 有序数组     *  查找元素     * @return key的数组下标,没找到返回-1     */  </span>    public static void main(String[] args) {         int srcArray[] = {3,5,11,17,21,23,28,30,32,50,64,78,81,95,101};           System.out.println(binSearch(srcArray, 0, srcArray.length - 1, 81));      }                     // 二分查找递归实现    
                public static int binSearch(int srcArray[], int start, int end, int key) {           int mid = (end - start) / 2 + start;           if (srcArray[mid] == key) {               return mid;           }           if (start >= end) {               return -1;           } else if (key > srcArray[mid]) {               return binSearch(srcArray, mid + 1, end, key);           } else if (key < srcArray[mid]) {               return binSearch(srcArray, start, mid - 1, key);           }           return -1;       }      
                 // 二分查找普通循环实现    
                public static int binSearch(int srcArray[], int key) {           int mid = srcArray.length / 2;           if (key == srcArray[mid]) {               return mid;           }             int start = 0;           int end = srcArray.length - 1;           while (start <= end) {               mid = (end - start) / 2 + start;               if (key < srcArray[mid]) {                  end = mid - 1;               } else if (key > srcArray[mid]) {                   start = mid + 1;               } else {                   return mid;               }           }           return -1;       } 



0 0