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

1.写一个方法,用一个for循环打印九九乘法表 
Java代码   收藏代码
  1.    /** 
  2.  * 打印九九乘法口诀表 
  3.  */  
  4. public void nineNineMulitTable(){  
  5.     for (int i = 1,j = 1; j <= 9; i++) {   
  6.           System.out.print(i+"*"+j+"="+i*j+" ");   
  7.           if(i==j){   
  8.               i=0;   
  9.               j++;   
  10.               System.out.println();   
  11.           }   
  12.       }   
  13. }  
 
2.给定一个java.util.Date对象,如何转化为”2007-3-22 20:23:22”格式的字符串 
 
Java代码   收藏代码
  1. /**  
  2.      * 将某个日期以固定格式转化成字符串  
  3.      * @param date  
  4.     * @return str  
  5.     */   
  6.     public String date2FormatStr(Date date)  
  7.     {   
  8.       SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");   
  9.       String str = sdf.format(date);   
  10.       return str;   
  11.     }   

 
3.写一个方法,能够判断任意一个整数是否素数 
 

Java代码   收藏代码
  1. /**  
  2. * 判断任意一个整数是否素数  
  3. * @param num  
  4. * @return boolean  
  5. */   
  6. public boolean isPrimeNumber(int num)   
  7. {   
  8.   for (int i = 2; i <= Math.sqrt(num); i++) {   
  9.       if(num%i==0)   
  10.       {   
  11.           return false;   
  12.       }   
  13.   }   
  14.   return true;   
  15. }   

 

4.写一个方法,输入任意一个整数,返回它的阶乘
Java代码   收藏代码
  1. /**  
  2.  *获得任意一个整数的阶乘  
  3.  *@param n  
  4.  *@returnn!  
  5.  */   
  6.  public int factorial(int num)   
  7.  {   
  8.    //递归   
  9.    if(num == 1)   
  10.    {   
  11.        return 1;   
  12.    }   
  13.    return num*factorial(num-1);  
  14.  }  
 
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.   }   

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值