第三周作业——顺序查找和二分查找

来源:互联网 发布:淘宝联盟新号设置 编辑:程序博客网 时间:2024/05/19 00:52
/**  * 二分查找又称折半查找,它是一种效率较高的查找方法。    【二分查找要求】:1.必须采用顺序存储结构 2.必须按关键字大小有序排列。  * @author Administrator  *  */  public class BinarySearch {       public static void main(String[] args) {          int[] src = new int[] {1, 3, 5, 7, 8, 9};           System.out.println(binarySearch(src, 3));          System.out.println(binarySearch(src,3,0,src.length-1));      }        /**      * * 二分查找算法 * *      *       * @param srcArray      *            有序数组 *      * @param des      *            查找元素 *      * @return des的数组下标,没找到返回-1      */      public static int binarySearch(int[] srcArray, int des){                 int low = 0;           int high = srcArray.length-1;           while(low <= high) {               int middle = (low + high)/2;               if(des == srcArray[middle]) {                   return middle;               }else if(des <srcArray[middle]) {                   high = middle - 1;               }else {                   low = middle + 1;               }          }          return -1;     }                /**        *二分查找特定整数在整型数组中的位置(递归)            */      public static int binarySearch(int[] dataset,int data,int beginIndex,int endIndex){           int midIndex = (beginIndex+endIndex)/2;           if(data <dataset[beginIndex]||data>dataset[endIndex]||beginIndex>endIndex){             return -1;           }         if(data <dataset[midIndex]){               return binarySearch(dataset,data,beginIndex,midIndex-1);           }else if(data>dataset[midIndex]){               return binarySearch(dataset,data,midIndex+1,endIndex);           }else {               return midIndex;           }       }     }  

public class OrderSearch {      /**顺序查找平均时间复杂度 O(n)      * @param searchKey 要查找的值      * @param array 数组(从这个数组中查找)      * @return  查找结果(数组的下标位置)      */      public static int orderSearch(int searchKey,int... array){          for(int i=0;i<array.length;i++){              if(array[i]==searchKey){                  return i;              }          }          return -1;                }      /**测试查找结果      * @param args      */      public static void main(String[] args) {            int[] test=new int[]{1,2,29,3,95,3,5,6,7,9,12};//升序序列            int index=OrderSearch.orderSearch(95, test);            System.out.println("查找到的位置 :"+ index);        }  }  


0 0
原创粉丝点击