java面试程序题收集

 

java面试程序题收集

Java 面试 J# 算法

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.  }  
/** * 打印九九乘法口诀表 */ 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代码 复制代码
  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.  }  
/** * 将某个日期以固定格式转化成字符串 * @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代码 复制代码
  1. /**    
  2.  * 判断任意一个整数是否素数    
  3.  * @param num    
  4.  * @return boolean  
  5. */     
  6. public boolean isPrimeNumber(int num) {     
  7.   for (int i = 2; i <= Math.sqrt(num); i++) {     
  8.     if(num%i==0){     
  9.       return false;     
  10.     }     
  11.   }     
  12.   return true;     
  13. }  
/** * 判断任意一个整数是否素数 * @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代码 复制代码
  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.   }  
/** *获得任意一个整数的阶乘 *@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.   }  
/** *二分查找特定整数在整型数组中的位置(递归) *@param dataset *@param data *@param beginIndex *@param endIndex *@return index */ public 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 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; }

6.java排序汇总

Java代码 复制代码
  1. package com.softeem.jbs.lesson4;    
  2.      
  3. import java.util.Random;       
  4.      
  5. /**    
  6.    
  7.  * 排序测试类    
  8.    
  9.  *     
  10.    
  11.  * 排序算法的分类如下:    
  12.    
  13.  * 1.插入排序(直接插入排序、折半插入排序、希尔排序);    
  14.    
  15.  * 2.交换排序(冒泡泡排序、快速排序);    
  16.    
  17.  * 3.选择排序(直接选择排序、堆排序);    
  18.    
  19.  * 4.归并排序;    
  20.    
  21.  * 5.基数排序。    
  22.    
  23.  *     
  24.    
  25.  * 关于排序方法的选择:    
  26.    
  27.  * (1)若n较小(如n≤50),可采用直接插入或直接选择排序。    
  28.    
  29.  *  当记录规模较小时,直接插入排序较好;否则因为直接选择移动的记录数少于直接插人,应选直接选择排序为宜。    
  30.    
  31.  * (2)若文件初始状态基本有序(指正序),则应选用直接插人、冒泡或随机的快速排序为宜;    
  32.    
  33.  * (3)若n较大,则应采用时间复杂度为O(nlgn)的排序方法:快速排序、堆排序或归并排序。    
  34.    
  35.  *     
  36.    
  37.  */     
  38.      
  39. public class SortTest {      
  40.      
  41.        
  42.      
  43.        /**    
  44.    
  45.         * 初始化测试数组的方法    
  46.    
  47.         * @return 一个初始化好的数组    
  48.    
  49.         */     
  50.      
  51.        public int[] createArray() {      
  52.      
  53.               Random random = new Random();      
  54.      
  55.               int[] array = new int[10];      
  56.      
  57.               for (int i = 0; i < 10; i++) {      
  58.      
  59.                      array[i] = random.nextInt(100) - random.nextInt(100);//生成两个随机数相减,保证生成的数中有负数      
  60.      
  61.               }      
  62.      
  63.               System.out.println("==========原始序列==========");      
  64.      
  65.               printArray(array);      
  66.      
  67.               return array;      
  68.      
  69.        }      
  70.      
  71.        
  72.      
  73.        /**    
  74.    
  75.         * 打印数组中的元素到控制台    
  76.    
  77.         * @param source    
  78.    
  79.         */     
  80.      
  81.        public void printArray(int[] data) {      
  82.      
  83.               for (int i : data) {      
  84.      
  85.                      System.out.print(i + " ");      
  86.      
  87.               }      
  88.      
  89.               System.out.println();      
  90.      
  91.        }      
  92.      
  93.        
  94.      
  95.        /**    
  96.    
  97.         * 交换数组中指定的两元素的位置    
  98.    
  99.         * @param data    
  100.    
  101.         * @param x    
  102.    
  103.         * @param y    
  104.    
  105.         */     
  106.      
  107.        private void swap(int[] data, int x, int y) {      
  108.      
  109.               int temp = data[x];      
  110.      
  111.               data[x] = data[y];      
  112.      
  113.               data[y] = temp;      
  114.      
  115.        }      
  116.      
  117.        
  118.      
  119.        /**    
  120.    
  121.         * 冒泡排序----交换排序的一种    
  122.    
  123.         * 方法:相邻两元素进行比较,如有需要则进行交换,每完成一次循环就将最大元素排在最后(如从小到大排序),下一次循环是将其他的数进行类似操作。     
  124.    
  125.         * 性能:比较次数O(n^2),n^2/2;交换次数O(n^2),n^2/4    
  126.    
  127.         *     
  128.    
  129.         * @param data 要排序的数组    
  130.    
  131.         * @param sortType 排序类型    
  132.    
  133.         * @return    
  134.    
  135.         */     
  136.      
  137.        public void bubbleSort(int[] data, String sortType) {      
  138.      
  139.               if (sortType.equals("asc")) { //正排序,从小排到大      
  140.      
  141.                      //比较的轮数      
  142.      
  143.                      for (int i = 1; i < data.length; i++) {      
  144.      
  145.                             //将相邻两个数进行比较,较大的数往后冒泡      
  146.      
  147.                             for (int j = 0; j < data.length - i; j++) {      
  148.      
  149.                                    if (data[j] > data[j + 1]) {      
  150.      
  151.                                           //交换相邻两个数      
  152.      
  153.                                           swap(data, j, j + 1);      
  154.      
  155.                                    }      
  156.      
  157.                             }      
  158.      
  159.                      }      
  160.      
  161.               } else if (sortType.equals("desc")) { //倒排序,从大排到小      
  162.      
  163.                      //比较的轮数      
  164.      
  165.                      for (int i = 1; i < data.length; i++) {      
  166.      
  167.                             //将相邻两个数进行比较,较大的数往后冒泡      
  168.      
  169.                             for (int j = 0; j < data.length - i; j++) {      
  170.      
  171.                                    if (data[j] < data[j + 1]) {      
  172.      
  173.                                           //交换相邻两个数      
  174.      
  175.                                           swap(data, j, j + 1);      
  176.      
  177.                                    }      
  178.      
  179.                             }      
  180.      
  181.                      }      
  182.      
  183.               } else {      
  184.      
  185.                      System.out.println("您输入的排序类型错误!");      
  186.      
  187.               }      
  188.      
  189.               printArray(data);//输出冒泡排序后的数组值      
  190.      
  191.        }      
  192.      
  193.        
  194.      
  195.        /**    
  196.    
  197.         * 直接选择排序法----选择排序的一种    
  198.    
  199.         * 方法:每一趟从待排序的数据元素中选出最小(或最大)的一个元素, 顺序放在已排好序的数列的最后,直到全部待排序的数据元素排完。    
  200.    
  201.         * 性能:比较次数O(n^2),n^2/2    
  202.    
  203.         *       交换次数O(n),n    
  204.    
  205.         *       交换次数比冒泡排序少多了,由于交换所需CPU时间比比较所需的CUP时间多,所以选择排序比冒泡排序快。    
  206.    
  207.         *       但是N比较大时,比较所需的CPU时间占主要地位,所以这时的性能和冒泡排序差不太多,但毫无疑问肯定要快些。    
  208.    
  209.         *     
  210.    
  211.         * @param data 要排序的数组    
  212.    
  213.         * @param sortType 排序类型    
  214.    
  215.         * @return    
  216.    
  217.         */     
  218.      
  219.        public void selectSort(int[] data, String sortType) {      
  220.      
  221.        
  222.      
  223.               if (sortType.equals("asc")) { //正排序,从小排到大      
  224.      
  225.                      int index;      
  226.      
  227.                      for (int i = 1; i < data.length; i++) {      
  228.      
  229.                             index = 0;      
  230.      
  231.                             for (int j = 1; j <= data.length - i; j++) {      
  232.      
  233.                                    if (data[j] > data[index]) {      
  234.      
  235.                                           index = j;      
  236.      
  237.        
  238.      
  239.                                    }      
  240.      
  241.                             }      
  242.      
  243.                             //交换在位置data.length-i和index(最大值)两个数      
  244.      
  245.                             swap(data, data.length - i, index);      
  246.      
  247.                      }      
  248.      
  249.               } else if (sortType.equals("desc")) { //倒排序,从大排到小      
  250.      
  251.                      int index;      
  252.      
  253.                      for (int i = 1; i < data.length; i++) {      
  254.      
  255.                             index = 0;      
  256.      
  257.                             for (int j = 1; j <= data.length - i; j++) {      
  258.      
  259.                                    if (data[j] < data[index]) {      
  260.      
  261.                                           index = j;      
  262.      
  263.        
  264.      
  265.                                    }      
  266.      
  267.                             }      
  268.      
  269.                             //交换在位置data.length-i和index(最大值)两个数      
  270.      
  271.                             swap(data, data.length - i, index);      
  272.      
  273.                      }      
  274.      
  275.               } else {      
  276.      
  277.                      System.out.println("您输入的排序类型错误!");      
  278.      
  279.               }      
  280.      
  281.               printArray(data);//输出直接选择排序后的数组值      
  282.      
  283.        }      
  284.      
  285.        
  286.      
  287.        /**    
  288.    
  289.         * 插入排序    
  290.    
  291.         * 方法:将一个记录插入到已排好序的有序表(有可能是空表)中,从而得到一个新的记录数增1的有序表。    
  292.    
  293.         * 性能:比较次数O(n^2),n^2/4    
  294.    
  295.         *       复制次数O(n),n^2/4    
  296.    
  297.         *       比较次数是前两者的一般,而复制所需的CPU时间较交换少,所以性能上比冒泡排序提高一倍多,而比选择排序也要快。    
  298.    
  299.         *    
  300.    
  301.         * @param data 要排序的数组    
  302.    
  303.         * @param sortType 排序类型    
  304.    
  305.         */     
  306.      
  307.        public void insertSort(int[] data, String sortType) {      
  308.      
  309.               if (sortType.equals("asc")) { //正排序,从小排到大      
  310.      
  311.                      //比较的轮数      
  312.      
  313.                      for (int i = 1; i < data.length; i++) {      
  314.      
  315.                             //保证前i+1个数排好序      
  316.      
  317.                             for (int j = 0; j < i; j++) {      
  318.      
  319.                                    if (data[j] > data[i]) {      
  320.      
  321.                                           //交换在位置j和i两个数      
  322.      
  323.                                           swap(data, i, j);      
  324.      
  325.                                    }      
  326.      
  327.                             }      
  328.      
  329.                      }      
  330.      
  331.               } else if (sortType.equals("desc")) { //倒排序,从大排到小      
  332.      
  333.                      //比较的轮数      
  334.      
  335.                      for (int i = 1; i < data.length; i++) {      
  336.      
  337.                             //保证前i+1个数排好序      
  338.      
  339.                             for (int j = 0; j < i; j++) {      
  340.      
  341.                                    if (data[j] < data[i]) {      
  342.      
  343.                                           //交换在位置j和i两个数      
  344.      
  345.                                           swap(data, i, j);      
  346.      
  347.                                    }      
  348.      
  349.                             }      
  350.      
  351.                      }      
  352.      
  353.               } else {      
  354.      
  355.                      System.out.println("您输入的排序类型错误!");      
  356.      
  357.               }      
  358.      
  359.               printArray(data);//输出插入排序后的数组值      
  360.      
  361.        }      
  362.      
  363.        
  364.      
  365.        /**    
  366.    
  367.         * 反转数组的方法    
  368.    
  369.         * @param data 源数组    
  370.    
  371.         */     
  372.      
  373.        public void reverse(int[] data) {      
  374.      
  375.        
  376.      
  377.               int length = data.length;      
  378.      
  379.               int temp = 0;//临时变量      
  380.      
  381.        
  382.      
  383.               for (int i = 0; i < length / 2; i++) {      
  384.      
  385.                      temp = data[i];      
  386.      
  387.                      data[i] = data[length - 1 - i];      
  388.      
  389.                      data[length - 1 - i] = temp;      
  390.      
  391.               }      
  392.      
  393.               printArray(data);//输出到转后数组的值      
  394.      
  395.        }      
  396.      
  397.        
  398.      
  399.        /**    
  400.    
  401.         * 快速排序    
  402.    
  403.         * 快速排序使用分治法(Divide and conquer)策略来把一个序列(list)分为两个子序列(sub-lists)。    
  404.    
  405.         * 步骤为:    
  406.    
  407.         * 1. 从数列中挑出一个元素,称为 "基准"(pivot),    
  408.    
  409.         * 2. 重新排序数列,所有元素比基准值小的摆放在基准前面,所有元素比基准值大的摆在基准的后面(相同的数可以到任一边)。在这个分割之后,该基准是它的最后位置。这个称为分割(partition)操作。    
  410.    
  411.         * 3. 递归地(recursive)把小于基准值元素的子数列和大于基准值元素的子数列排序。    
  412.    
  413.         * 递回的最底部情形,是数列的大小是零或一,也就是永远都已经被排序好了。虽然一直递回下去,但是这个算法总会结束,因为在每次的迭代(iteration)中,它至少会把一个元素摆到它最后的位置去。    
  414.    
  415.         * @param data 待排序的数组    
  416.    
  417.         * @param low    
  418.    
  419.         * @param high    
  420.    
  421.         * @see SortTest#qsort(int[], int, int)    
  422.    
  423.         * @see SortTest#qsort_desc(int[], int, int)    
  424.    
  425.         */     
  426.      
  427.        public void quickSort(int[] data, String sortType) {      
  428.      
  429.               if (sortType.equals("asc")) { //正排序,从小排到大      
  430.      
  431.                      qsort_asc(data, 0, data.length - 1);      
  432.      
  433.               } else if (sortType.equals("desc")) { //倒排序,从大排到小      
  434.      
  435.                      qsort_desc(data, 0, data.length - 1);      
  436.      
  437.               } else {      
  438.      
  439.                      System.out.println("您输入的排序类型错误!");      
  440.      
  441.               }      
  442.      
  443.        }      
  444.      
  445.        
  446.      
  447.        /**    
  448.    
  449.         * 快速排序的具体实现,排正序    
  450.    
  451.         * @param data    
  452.    
  453.         * @param low    
  454.    
  455.         * @param high    
  456.    
  457.         */     
  458.      
  459.        private void qsort_asc(int data[], int low, int high) {      
  460.      
  461.               int i, j, x;      
  462.      
  463.               if (low < high) { //这个条件用来结束递归      
  464.      
  465.                      i = low;      
  466.      
  467.                      j = high;      
  468.      
  469.                      x = data[i];      
  470.      
  471.                      while (i < j) {      
  472.      
  473.                             while (i < j && data[j] > x) {      
  474.      
  475.                                    j--; //从右向左找第一个小于x的数      
  476.      
  477.                             }      
  478.      
  479.                             if (i < j) {      
  480.      
  481.                                    data[i] = data[j];      
  482.      
  483.                                    i++;      
  484.      
  485.                             }      
  486.      
  487.                             while (i < j && data[i] < x) {      
  488.      
  489.                                    i++; //从左向右找第一个大于x的数      
  490.      
  491.                             }      
  492.      
  493.                             if (i < j) {      
  494.      
  495.                                    data[j] = data[i];      
  496.      
  497.                                    j--;      
  498.      
  499.                             }      
  500.      
  501.                      }      
  502.      
  503.                      data[i] = x;      
  504.      
  505.                      qsort_asc(data, low, i - 1);      
  506.      
  507.                      qsort_asc(data, i + 1, high);      
  508.      
  509.               }      
  510.      
  511.        }      
  512.      
  513.        
  514.      
  515.        /**    
  516.    
  517.         * 快速排序的具体实现,排倒序    
  518.    
  519.         * @param data    
  520.    
  521.         * @param low    
  522.    
  523.         * @param high    
  524.    
  525.         */     
  526.      
  527.        private void qsort_desc(int data[], int low, int high) {      
  528.      
  529.               int i, j, x;      
  530.      
  531.               if (low < high) { //这个条件用来结束递归      
  532.      
  533.                      i = low;      
  534.      
  535.                      j = high;      
  536.      
  537.                      x = data[i];      
  538.      
  539.                      while (i < j) {      
  540.      
  541.                             while (i < j && data[j] < x) {      
  542.      
  543.                                    j--; //从右向左找第一个小于x的数      
  544.      
  545.                             }      
  546.      
  547.                             if (i < j) {      
  548.      
  549.                                    data[i] = data[j];      
  550.      
  551.                                    i++;      
  552.      
  553.                             }      
  554.      
  555.                             while (i < j && data[i] > x) {      
  556.      
  557.                                    i++; //从左向右找第一个大于x的数      
  558.      
  559.                             }      
  560.      
  561.                             if (i < j) {      
  562.      
  563.                                    data[j] = data[i];      
  564.      
  565.                                    j--;      
  566.      
  567.                             }      
  568.      
  569.                      }      
  570.      
  571.                      data[i] = x;      
  572.      
  573.                      qsort_desc(data, low, i - 1);      
  574.      
  575.                      qsort_desc(data, i + 1, high);      
  576.      
  577.               }      
  578.      
  579.        }      
  580.      
  581.        
  582.      
  583.        /**    
  584.    
  585.         *二分查找特定整数在整型数组中的位置(递归)    
  586.    
  587.         *查找线性表必须是有序列表    
  588.    
  589.         *@paramdataset    
  590.    
  591.         *@paramdata    
  592.    
  593.         *@parambeginIndex    
  594.    
  595.         *@paramendIndex    
  596.    
  597.         *@returnindex    
  598.    
  599.         */     
  600.      
  601.        public int binarySearch(int[] dataset, int data, int beginIndex,      
  602.      
  603.                      int endIndex) {      
  604.      
  605.               int midIndex = (beginIndex + endIndex) >>> 1//相当于mid = (low + high) / 2,但是效率会高些      
  606.      
  607.               if (data < dataset[beginIndex] || data > dataset[endIndex]      
  608.      
  609.                             || beginIndex > endIndex)      
  610.      
  611.                      return -1;      
  612.      
  613.               if (data < dataset[midIndex]) {      
  614.      
  615.                      return binarySearch(dataset, data, beginIndex, midIndex - 1);      
  616.      
  617.               } else if (data > dataset[midIndex]) {      
  618.      
  619.                      return binarySearch(dataset, data, midIndex + 1, endIndex);      
  620.      
  621.               } else {      
  622.      
  623.                      return midIndex;      
  624.      
  625.               }      
  626.      
  627.        }      
  628.      
  629.        
  630.      
  631.        /**    
  632.    
  633.         *二分查找特定整数在整型数组中的位置(非递归)    
  634.    
  635.         *查找线性表必须是有序列表    
  636.    
  637.         *@paramdataset    
  638.    
  639.         *@paramdata    
  640.    
  641.         *@returnindex    
  642.    
  643.         */     
  644.      
  645.        public int binarySearch(int[] dataset, int data) {      
  646.      
  647.               int beginIndex = 0;      
  648.      
  649.               int endIndex = dataset.length - 1;      
  650.      
  651.               int midIndex = -1;      
  652.      
  653.               if (data < dataset[beginIndex] || data > dataset[endIndex]      
  654.      
  655.                             || beginIndex > endIndex)      
  656.      
  657.                      return -1;      
  658.      
  659.               while (beginIndex <= endIndex) {      
  660.      
  661.                      midIndex = (beginIndex + endIndex) >>> 1//相当于midIndex = (beginIndex + endIndex) / 2,但是效率会高些      
  662.      
  663.                      if (data < dataset[midIndex]) {      
  664.      
  665.                             endIndex = midIndex - 1;      
  666.      
  667.                      } else if (data > dataset[midIndex]) {      
  668.      
  669.                             beginIndex = midIndex + 1;      
  670.      
  671.                      } else {      
  672.      
  673.                             return midIndex;      
  674.      
  675.                      }      
  676.      
  677.               }      
  678.      
  679.               return -1;      
  680.      
  681.        }      
  682.      
  683.        
  684.      
  685.        public static void main(String[] args) {      
  686.      
  687.               SortTest sortTest = new SortTest();      
  688.      
  689.        
  690.      
  691.               int[] array = sortTest.createArray();      
  692.      
  693.        
  694.      
  695.               System.out.println("==========冒泡排序后(正序)==========");      
  696.      
  697.               sortTest.bubbleSort(array, "asc");      
  698.      
  699.               System.out.println("==========冒泡排序后(倒序)==========");      
  700.      
  701.               sortTest.bubbleSort(array, "desc");      
  702.      
  703.        
  704.      
  705.               array = sortTest.createArray();      
  706.      
  707.        
  708.      
  709.               System.out.println("==========倒转数组后==========");      
  710.      
  711.               sortTest.reverse(array);      
  712.      
  713.        
  714.      
  715.               array = sortTest.createArray();      
  716.      
  717.        
  718.      
  719.               System.out.println("==========选择排序后(正序)==========");      
  720.      
  721.               sortTest.selectSort(array, "asc");      
  722.      
  723.               System.out.println("==========选择排序后(倒序)==========");      
  724.      
  725.               sortTest.selectSort(array, "desc");      
  726.      
  727.        
  728.      
  729.               array = sortTest.createArray();      
  730.      
  731.        
  732.      
  733.               System.out.println("==========插入排序后(正序)==========");      
  734.      
  735.               sortTest.insertSort(array, "asc");      
  736.      
  737.               System.out.println("==========插入排序后(倒序)==========");      
  738.      
  739.               sortTest.insertSort(array, "desc");      
  740.      
  741.        
  742.      
  743.               array = sortTest.createArray();      
  744.      
  745.               System.out.println("==========快速排序后(正序)==========");      
  746.      
  747.               sortTest.quickSort(array, "asc");      
  748.      
  749.               sortTest.printArray(array);      
  750.      
  751.               System.out.println("==========快速排序后(倒序)==========");      
  752.      
  753.               sortTest.quickSort(array, "desc");      
  754.      
  755.               sortTest.printArray(array);      
  756.      
  757.        
  758.      
  759.               System.out.println("==========数组二分查找==========");      
  760.      
  761.               System.out.println("您要找的数在第" + sortTest.binarySearch(array, 74)      
  762.      
  763.                             + "个位子。(下标从0计算)");      
  764.      
  765.        }      
  766.      
  767. }  

你可能感兴趣的:(java面试程序题收集)