Java面试中遇到的一些经典算法题目

1.写一个方法,用一个for循环打印九九乘法表

Java代码
         /**
     * 打印九九乘法口诀表
     */
    public void nineNineMulitTable(){
        for (int i = 1,j = 1; j <= 9; i++) {
              System.out.print(i+"*"+j+"="+i*j+" ");
              if(i==j){
                  i=0;
                  j++;
                  System.out.println();
              }
          }
    }


2.给定一个java.util.Date对象,如何转化为”2007-3-22 20:23:22”格式的字符串
 
Java代码

/**
     * 将某个日期以固定格式转化成字符串
     * @param date
    * @return str
    */
    public String date2FormatStr(Date date)
    {
      SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
      String str = sdf.format(date);
      return str;
    } 
3.写一个方法,能够判断任意一个整数是否素数
 

Java代码

    /**
    * 判断任意一个整数是否素数
    * @param num
    * @return boolean
    */
    public boolean isPrimeNumber(int num)
    {
      for (int i = 2; i <= Math.sqrt(num); i++) {
          if(num%i==0)
          {
              return false;
          }
      }
      return true;
    }


4.写一个方法,输入任意一个整数,返回它的阶乘
Java代码

     /**
      *获得任意一个整数的阶乘
      *@param n
      *@returnn!
      */
      public int factorial(int num)
      {
        //递归
        if(num == 1)
        {
            return 1;
        }
        return num*factorial(num-1);
      }
5.写一个方法,用二分查找法判断任意整数在任意整数数组里面是否存在,若存在就返回它在数组中的索引位置,不存在返回-1

Java代码
1./**  
2. *二分查找特定整数在整型数组中的位置(递归)  
3. *@param dataset  
4. *@param data  
5. *@param beginIndex  
6. *@param endIndex  
7. *@return index  
8. */   
9. public int binarySearch(int[] dataset,int data,int beginIndex,int endIndex){   
10.   int midIndex = (beginIndex+endIndex)/2;   
11.   //如果查找的数要比开始索引的数据要小或者是比结束索引的书要大,或者开始查找的索引值大于结束的索引值返回-1没有查到  
12.   if(data <dataset[beginIndex]||data>dataset[endIndex]||beginIndex>endIndex){  
13.       return -1;  
14.   }  
15.   if(data <dataset[midIndex]){    
16.       return binarySearch(dataset,data,beginIndex,midIndex-1);   
17.   }else if(data>dataset[midIndex])   
18.   {   
19.       return binarySearch(dataset,data,midIndex+1,endIndex);   
20.   }else {   
21.       return midIndex;   
22.   }   
23. }   
24.   
25. /**  
26.  *二分查找特定整数在整型数组中的位置(非递归)  
27.  *@param dataset  
28.  *@param data  
29.  *@return index  
30.  */   
31.  public int binarySearch(int[] dataset ,int data)   
32.  {   
33.    int beginIndex = 0;    
34.    int endIndex = dataset.length - 1;    
35.    int midIndex = -1;   
36.    if(data <dataset[beginIndex]||data>dataset[endIndex]||beginIndex>endIndex){  
37.        return -1;   
38.    }  
39.    while(beginIndex <= endIndex) {   
40.        midIndex = (beginIndex+endIndex)/2;   
41.        if(data <dataset[midIndex]) {    
42.           endIndex = midIndex-1;    
43.        } else if(data>dataset[midIndex]) {    
44.          beginIndex = midIndex+1;    
45.        }else {   
46.          return midIndex;   
47.        }   
48.    }   
49.    return -1;   
50.  }  

你可能感兴趣的:(java,算法,面试,J#)