1. 程式人生 > >java經典演算法(氣泡排序和選擇排序)

java經典演算法(氣泡排序和選擇排序)

氣泡排序:

氣泡排序的基本思想就是對相鄰的兩個元素進行排序,按照需求條件進行元素交換,依次排列,每一次排序都將最大或最小的元素按照順序依次排到最後一位,就像水中的氣泡一樣最大的氣泡浮在

最上面,依次完成陣列排序。

程式碼實現:

/**
 * 氣泡排序
 */
public class TestArraySort1 {
    public static void main(String[] args) {
        int[] a={1,4,3,2};
        /**
         * 思路分析:從小到大排序,每相鄰的兩個元素比較
         * 第一次比較:
         *  a[0]~a[1]   a[0]<a[1]   1,4,3,2
         *  a[1]~a[2]   a[1]>a[2]   1,3,4,2
         *  a[2]~a[3]   a[2]>a[3]   1,3,2,4
         * 第二次比較:
         * a[0]~a[1]    a[0]<a[1]   1,3,2,4
         * a[1]~a[2]    a[1]>a[2]   1,2,3,4
         * 第三次比較:
         * a[0]~a[1]    a[0]<a[1]   1,2,3,4
         *
         */

        //雙層for迴圈,外層控制迴圈次數,內層迴圈條件判斷和排序。
        for (int i = 1; i < a.length; i++) {
            for (int j = 0; j <a.length-i ; j++) {
                if(a[j]>a[j+1]){
                    int temp=a[j+1];
                    a[j+1]=a[j];
                    a[j]=temp;
                }
            }
            
        }
        //遍歷排序後的陣列。
        for (int i = 0; i <a.length ; i++) {
            System.out.println(a[i]);
        }

    }
}
選擇排序:

選擇排序的基本思想就是每一次排序的過程中,一個元素與其它幾個元素比較,按照需求條件進行元素交換,依次排列,每一次排序都選擇最大或最小的元素放到第一位,依次完成陣列排序。

程式碼實現:

/**
 * 選擇排序
 */
public class TestArraySort2 {
    public static void main(String[] args) {
        int[] a={1,4,3,2};
        /**
         * 思路分析:從小到大排序,每一次排序選擇最大的
         * 第一次排序:
         *  a[0]~a[1]   a[0]<a[1]   1,4,3,2
         *  a[0]~a[2]   a[0]<a[2]   1,4,3,2
         *  a[0]~a[3]   a[0]<a[3]   1,4,3,2
         * 第二次排序:
         * a[1]~a[2]    a[1]>a[2]   1,3,4,2
         * a[1]~a[3]    a[1]>a[3]   1,2,4,3
         * 第三次排序:
         * a[2]~a[3]    a[2]<a[3]   1,2,3,4
         *
         */
        //雙層for迴圈,外層控制第一個元素,依次與內層其它元素比較和排序。
        for (int i = 1; i < a.length; i++) {
            for (int j = i; j <a.length ; j++) {
                if(a[i-1]>a[j]){
                    int temp=a[i-1];
                    a[i-1]=a[j];
                    a[j]=temp;
                }
            }

        }
        //迴圈遍歷排序後的陣列。
        for (int i = 0; i <a.length ; i++) {
            System.out.println(a[i]);
        }

    }
}