从今天起,我将为大家分享一些我做过的java面试题,每篇一道,希望对想要去面试的朋友或是想要多学学的朋友有帮助,欢迎探讨,最好经过大家讨论能找到最有方式。(如有不好之处,欢迎拍砖)

  1. /**  
  2.  * 面试题之一:  
  3.  *     昨天面试时,看到一个面试题,他是这么问的,有一个已经排好序的数组,现在输入一个数  
  4.  *     问,现在要你编写一个函数,去得到这个数的索引.\  
  5.  * 以下为我改进过的答案,如有更好的,欢迎探讨。  
  6.  */ 
  7. public class Problem1ArrayIndex {  
  8.       
  9.     public static void main(String[] args) {  
  10.         int[] testArrays = {1,2,3,4,5,10,20,30};  
  11.         int result = getIndex(testArrays,0,testArrays.length-1,30);  
  12.         System.out.println(result);  
  13.     }  
  14.       
  15.     public static int getIndex(int[] testArrays, int startIndex , int endIndex,int inputNumber){  
  16.         // 检测起始索引是否为为我们所需要的  
  17.         if(inputNumber == testArrays[startIndex])  
  18.             return startIndex;  
  19.         // 检测终止索引是否为我们所要的  
  20.         if(inputNumber == testArrays[endIndex])  
  21.             return endIndex;  
  22.           
  23.         // 校验是否这个数存在在数组中,如果不存在,返回Integer.MAX_VALUE  
  24.         if(testArrays[endIndex]<inputNumber || testArrays[startIndex] > inputNumber || endIndex - startIndex == 1){  
  25.             return Integer.MAX_VALUE;  
  26.         }  
  27.           
  28.         // 以下操作时求出中间索引  
  29.         int temp = endIndex + startIndex;  
  30.         int tempIndex = temp%2 == 0 ? temp/2 :temp/2+1;  
  31.           
  32.         // 递归索引  
  33.         if(inputNumber == testArrays[tempIndex]){  
  34.             return tempIndex;  
  35.         }else if(inputNumber < testArrays[tempIndex]){  
  36.             return getIndex(testArrays,startIndex,tempIndex,inputNumber);  
  37.         }else{  
  38.             return getIndex(testArrays,tempIndex,endIndex,inputNumber);  
  39.         }  
  40.     }  
  41. }