JAVA面试题之冒泡排序,插入排序及选择排序

经过几家的面试,发现每次笔试都有一道排序的题目,所以梳理一下,防止在面试中卡壳。

1、使用JAVA实现一个冒泡排序:

源码:

 public static void main(String[] args) {
        int [] a = {4,1,18,6,5,9};
        int [] c = bubbleSort(a);
        System.out.print("冒泡排序结果:   ");
        for (int i = 0; i < c.length; i++) {
            System.out.print(c[i]+"   ");
        }
    }
    public static int [] bubbleSort(int [] a){
        int temp = 0;
        for(int i=1;i<a.length;i++){
            for(int j=0;j<a.length-i;j++){
                //一次比较两个元素,如果前者大于后者,就将他们进行交换。
                if (a[j] > a[j+1]) {
                    temp = a[j];
                    a[j] = a[j+1];
                    a[j+1] = temp;
                }
            }
        }
        return a;
    }

代码分析:见《JAVA之冒泡排序》

2、使用JAVA实现一个选择排序:

源码:

 public static void main(String[] args) {
        int [] a = {7,4,9,13,1,6};
        int [] c = chooseSort(a);
        for (int i = 0; i < c.length; i++) {
            System.out.print(c[i]+ "   ");
        }
    }
    /**
     * 选择排序:
     * 从数列中第一位开始,遍历之后的所有,选择出最小的一个放到第一位。
     * 接下来从第二位开始,找到数组中第二个小数,放到第二个位置,以此类推。
     * @param a
     * @return
     */
    public static int [] chooseSort(int [] a){
        //定义最小数据的下表,默认是第一个
        int minIndex = 0;
        for (int i = 0; i < a.length-1; i++) {
            minIndex = i;
            for (int j = i+1; j < a.length; j++) {
                if(a[minIndex]>a[j]){
                    minIndex = j;
                }
            }
            //找到最小值的角标,进行交换
            if (minIndex != i){
                int temp = a[i];
                a[i] = a[minIndex];
                a[minIndex] = temp;
            }
        }
        return  a;
    }

代码分析:见《JAVA之选择排序》

3、使用JAVA实现一个插入排序:

源码:

   public static void main(String[] args) {
        int [] a = {7,4,9,13,1,6};
        int [] c = insertSort(a);
        for (int i = 0; i < c.length; i++) {
            System.out.print(c[i]+"   ");
        }
    }
    private static int[] insertSort(int[] a) {
        int inserNode;
        int j;
        for (int i = 1; i < a.length; i++) {
            inserNode = a[i];
            j = i-1;
            while (j>=0 && a[j]>inserNode){
                a[j+1] = a[j];
                j--;
            }
            a[j+1] = inserNode;
        }
        return a;
    }

代码分析:见《JAVA之插入排序》

总结:巩固基础,勇攀高峰!


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章