`

一些常见的(关于算法)java面试题!供大家参考

    博客分类:
  • J2SE
阅读更多

    /**
     * 打印九九乘法口诀表
     */
    public static 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(); 
              } 
          } 
    }
    /** 
     * * 将某个日期以固定格式转化成字符串 * 
     * @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; 
    }
    /**
     * 判断任意一个整数是否素数
     * @param num
     * @return boolean
     */
     public static boolean isPrimeNumber(int num)
     {
       for (int i = 2; i <= Math.sqrt(num); i++) {
           if(num%i==0)
           {
               System.out.println("不是素数");
               return false;
           }
       }
       System.out.println("是素数");
       return true;
     } 

     /** 
      * *获得任意一个整数的阶乘 *
      * @param n *@returnn! 
      * */ 
     public static int factorial(int num) 
     { 
         //递归  
         if(num == 1) 
         {
             return 1; 
         } 
         return num*factorial(num-1); 
    }
     /** *二分查找特定整数在整型数组中的位置(递归) 
      * *@param dataset 
      * *@param data 
      * *@param beginIndex 
      * *@param endIndex 
      * *@return index 
      * */ 
     public static int binarySearch(int[] dataset,int data,int beginIndex,int endIndex)
     { 
         int midIndex = (beginIndex+endIndex)/2; //如果查找的数要比开始索引的数据要小或者是比结束索引的书要大,或者开始查找的索引值大于结束的索引值返回-1没有查到  
         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; 
        } 
        }
     /** *二分查找特定整数在整型数组中的位置(非递归) *
      * @param dataset *
      * @param data *
      * @return index 
      * */ 
     public static int binarySearch(int[] dataset ,int data) 
     { 
         int beginIndex = 0; 
         int endIndex = dataset.length - 1; 
         int midIndex = -1; 
         if(data <dataset[beginIndex]||data>dataset[endIndex]||beginIndex>endIndex)
         { 
             return -1; 
             } 
         while(beginIndex <= endIndex) 
         { 
             midIndex = (beginIndex+endIndex)/2; 
             if(data <dataset[midIndex]) 
             { 
                 endIndex = midIndex-1; 
             } 
             else if(data>dataset[midIndex]) 
             { 
                 beginIndex = midIndex+1; 
             }else 
             { 
                     return midIndex; 
             } 
         } 
         return -1; 
     }
     /** 
      * 冒泡排序
      * @param dataset *
      * @param data *
      * @return index 
      * */ 
     public static void maopaoPrint(int[] before){
         String result = "" ;
         for (int i = 0; i < before.length; i++) {
             result +=before[i]+" ";
        }        
         System.out.println(result);
     }
     public static void maopaoSort(int[] arrys){
         int temp = 0;
         for (int j = 0; j < arrys.length; j++) {
            for (int k = 0; k < arrys.length-j-1; k++) {
                if(arrys[k] > arrys[k+1]){
                    temp = arrys[k];
                    arrys[k]= arrys[k+1];
                    arrys[k+1]=temp;
                }
            }            
        }
        maopaoPrint(arrys);
     }
     /**
      * 快速排序1
      * @param pData
      * @param pDataNum
      * @param left
      * @param right
      * */
     public static void QuickSort(String[] pData,int[] pDataNum,int left,int right)
     { 
         int i,j; 
         int iTemp; 
         String middle,strTemp;
         i = left; 
         j = right; 
         middle = pData[(left+right)/2]; 
         do{ 
             while((pData[i].compareTo(middle)<0) && (i<right)) 
                 i++; 
             while((pData[j].compareTo(middle))>0 && (j>left)) 
                 j--; 
         if(i<=j) 
         { 
             strTemp = pData[i]; 
             pData[i] = pData[j]; 
             pData[j] = strTemp; 
        
             iTemp = pDataNum[i]; 
             pDataNum[i] = pDataNum[j]; 
             pDataNum[j] = iTemp; 
        
             i++; 
             j--; 
         } 
         }while(i<=j);//如果两边扫描的下标交错,就停止(完成一次) 
    
         if(left<j) 
             QuickSort(pData,pDataNum,left,j); 
    
         if(right>i) 
             QuickSort(pData,pDataNum,i,right); 
     } 
     /**
      * 快排2
      * 
      * */
     public static void quickSort(int[] array) {
         quickSort(array, 0, array.length - 1);
     }

     private static void quickSort(int[] array, int low, int high) {
         if (low < high) {
             int p = partition(array, low, high);
             quickSort(array, low, p - 1);
             quickSort(array, p + 1, high);
         }

     }

     private static int partition(int[] array, int low, int high) {
         int s = array[high];
         int i = low - 1;
         for (int j = low; j < high; j++) {
             if (array[j] < s) {
                 i++;
                 swap(array, i, j);
             }
         }
         swap(array, ++i, high);
         return i;
     }
     //掉位方法
     private static void swap(int[] array, int i, int j) {
         int temp;
         temp = array[i];
         array[i] = array[j];
         array[j] = temp;
     }

     /**
      *插入排序(WHILE循环实现)
      *插入排序的基本思想是,经过i-1遍处理后,L[1..i-1]己排好序。
      *第i遍处理仅将L[i]插入L[1..i-1]的适当位置,使得L[1..i]又是排好序的序列。
      *要达到这个目的,我们可以用顺序比较的方法。首先比较L[i]和L[i-1],如果L[i-1]≤ L[i]騆[1..i]
      *已排好序,第i遍处理就结束了;否则交换L[i]与L[i-1]的位置,继续比较L[i-1]和L[i-2],
      *直到找到某一个位置j(1≤j≤i-1),使得L[j] ≤L[j+1]时为止。
        *简言之,插入排序就是每一步都将一个待排数据按其大小插入到已经排序的数据中的适当位置,
      *直到全部插入完毕。插入排序方法分直接插入排序和折半插入排序两种,这里只介绍直接插入排序,
      *折半插入排序留到“查找”内容中进行。
     *图1演示了对4个元素进行直接插入排序的过程,共需要(a),(b),(c)三次插入。
      *@paramsrc待排序数组
      */
     public static  void doInsertSort1(int[] src)
     {
        int len=src.length;
        for(int i=1;i<len;i++)
        {  
            int temp=src[i];
            int j=i;
           
            while(src[j-1]>temp)
            {
               src[j]=src[j-1];
               j--;
               if(j<=0)
                   break;
            }
            src[j]=temp;
            printResult(i+1,src);
        }
     }
     /**
      *插入排序(FOR循环实现)
      *@paramsrc待排序数组
      */
     public static void doInsertSort2(int[] src)
     {
        int len=src.length;
        for(int i=1;i<len;i++)
        {
            int j;
            int temp=src[i];
            for(j=i;j>0;j--)
            {
               if(src[j-1]>temp)
               {
                   src[j]=src[j-1];
                  
               }else//如果当前的数,不小前面的数,那就说明不小于前面所有的数,
                    //因为前面已经是排好了序的,所以直接通出当前一轮的比较
                   break;
            }
            src[j]=temp;
            printResult(i,src);
        }
     }

分享到:
评论

相关推荐

    java面试题以及技巧

    │ 上海税友软件 面试题.doc │ 公司培训文档-混淆的基本概念.doc │ 基本算法.doc │ 孙卫琴精通struts.基于MVC的.java.web设计与开发.pdf │ 学习Struts提供的和Form相关标签.txt │ 日企编码规范.doc │ 电信盈科...

    互联网校招题库资料笔试面试真题具体面试问题回答技巧腾讯阿里培训资料.zip

    遇到的一些Java面试题回顾.docx 50个C、C++面试题.pdf C++ 数据结构、算法笔试题.docx C++基础面试题.docx C++开发工程师面试题库.docx C++技能测试试卷一及答案.docx C++技能测试试卷二及答案.docx c++笔试面试宝典...

    java面试题及技巧4

    │ 上海税友软件 面试题.doc │ 公司培训文档-混淆的基本概念.doc │ 基本算法.doc │ 孙卫琴精通struts.基于MVC的.java.web设计与开发.pdf │ 学习Struts提供的和Form相关标签.txt │ 日企编码规范.doc │ 电信盈科...

    java面试题 Java培训PPT课件 Java面向对象程序设计 涵盖java各领域常见的基础知识 找工作面试可用 学习参考

    java面试题 Java培训PPT课件 涵盖java各领域常见的基础知识 找工作面试可用 学习参考 面向对象程序设计 GUI 线程 常用算法 设计模式等等

    java面试题及技巧3

    │ 上海税友软件 面试题.doc │ 公司培训文档-混淆的基本概念.doc │ 基本算法.doc │ 孙卫琴精通struts.基于MVC的.java.web设计与开发.pdf │ 学习Struts提供的和Form相关标签.txt │ 日企编码规范.doc │ 电信盈科...

    java面试题以及技巧6

    │ 上海税友软件 面试题.doc │ 公司培训文档-混淆的基本概念.doc │ 基本算法.doc │ 孙卫琴精通struts.基于MVC的.java.web设计与开发.pdf │ 学习Struts提供的和Form相关标签.txt │ 日企编码规范.doc │ 电信盈科...

    Java常用算法手册

    最后,列举了算法的一些常见面试题。  书中知识点覆盖全面,结构安排紧凑,讲解详细,实例丰富。全书对每一个知识点都给出了相应的算法及应用实例,虽然这些例子都是以Java语言来编写的,但是这些算法并不局限于...

    java面经+java面试宝典+大专题面试手册

    该资料包括Java面试常见问题、Java核心知识点、常见算法与数据结构、操作系统、网络编程等面试必备知识点,并且提供了一些常见的Java面试题和解答,以及一些面试技巧和经验分享。 该资料适合正在准备Java面试的...

    Java常用算法手册.zip

    接着,详细讲解了算法在排序、查找、数学计算、数论、历史趣题、游戏、密码学等领域中的应用:最后,列举了算法的一些常见面试题。书中知识点覆盖全面,结构安排紧凑,讲解详细,实例丰富。全书对每一个知识点都给出了相 ...

    java面试题目与技巧1

    │ 上海税友软件 面试题.doc │ 公司培训文档-混淆的基本概念.doc │ 基本算法.doc │ 孙卫琴精通struts.基于MVC的.java.web设计与开发.pdf │ 学习Struts提供的和Form相关标签.txt │ 日企编码规范.doc │ 电信盈科...

    常规Java工具,算法,加密,数据库,面试题,源代码分析,解决方案.zip

    面试经验和技巧:整理了常见的Java面试问题,并给出了答题建议和技巧。 代码和项目实例:提供了多个Java项目的源代码,方便学习者参考和实践。 学习笔记和心得:记录了学习过程中的重点难点和心得体会,有助于学习者...

    Java面试通关宝典:深度解读核心知识点与实战技巧,全面提升面试表现力与技术实力

    本文将对Java常见面试题进行总结和解析,旨在为准备面试的Java开发者提供全面而深入的学习参考。以下是一些关键的Java面试题目类别及其概述: Java集合框架:这部分问题关注ArrayList、LinkedList、HashMap、HashSet...

    高级java笔试题-java:Java

    垃圾回收算法,系统调用,多线程及各种锁实现源码分析,BIO/NIO/AIO到Netty源码原理,全程项目贯穿,推动理论实践,上课等于上班,经验超过传统教学后工作一年经验,夯实的课程内容保证你面试时气质、气场双优,同时...

    leetcode分类-LovingAlgorithm:恋上算法,Java版算法面试题解大全集

    恋上算法,Java版算法面试题解大全集 目录 第二版前言 ​ 相比于2018年第一版,第二版产生了以下更新。 编程语言由C++全部替换成Java。 对动态规划部分题目进行了大量更新。 对知识点进行更细致的划分,基本上覆盖...

    java校招常见笔试题-coding:编码

    java校招常见笔试题令人敬畏的竞争性编程 精选的Competitive Programming 、 Algorithm和Data Structure资源列表。 这份清单旨在为大家提供一个完整的参考和指导。 无论您是谁,我都希望您会发现这份清单对您有所...

    leetcode分类-Interviews-and-algorithms-python-:一些常见的算法题的python解法

    分类各种常见算法题的python实现 coder-interview-guide 题目来自《程序员代码面试指南》-左程云编著 原书使用的时java实现 leetcode 题目来自leetcode.com英文版,部分本人写,部分参考讨论区的答案 Sorting ...

    java-core:java核心技术项目

    常见面试题 写在前面 核心依赖 / src / com / resources / lib 模块说明 根据 中间的 启动说明 使用程序中main方法执行 问题(问题) 文献资料(文献资料) 参考书籍:Java核心编程卷一 捐赠 交流 如果大家有兴趣,...

    AIC的Java课程1-6章

    AIC的学费很贵,半年18000元,大家看看他们教些什么内容吧 &lt;br&gt;他们学校的网址...  题目来源: 大纲范围内,SCJP考题,企业面试题等。  题型:填空,选择,简答,编程等。[参考,可变] &lt;br&gt;

    java测试岗位笔试题-Fuxi_ziliao:Fuxi_ziliao

    java测试岗位笔试题 算法/NLP/深度学习/机器学习面试笔记 GitHub 地址: 深度学习/机器学习面试问题整理,想法来源于这个. 该仓库整理了“花书”《深度学习》中的一些常见问题,其中部分偏理论的问题没有收录,如有...

    LeetCode:关于LeetCode的做题记录和笔记(正在更新...。)

    其中我做了大致分类参考了bobo老师的和:分类笔记代码斑点发现链表栈阴离子树回溯法动态规划贪心算法数学设计弦乐图 :green_heart:点赞数最高的Leetcode问题-前100名 :fire:最常见的面试题 :penguin:腾讯精选练习 :...

Global site tag (gtag.js) - Google Analytics