1. 程式人生 > >三種簡單排序的實現(氣泡排序,選擇排序,插入排序 )

三種簡單排序的實現(氣泡排序,選擇排序,插入排序 )

氣泡排序:

public static void main(String[] args) {
        int[] a = {1, 7, 4, 3, 8, 2, 9, 6, 5};
        for(int j = a.length; j > 0; j--) {
            //第一遍先找出最大的數,從第一個開始找,兩兩對比,大的數移到右邊
            //第二遍在前n-1個數中重複第一遍的迴圈
            for (int i = 0; i < j - 1; i++) {
                if (a[i] > a[i + 1]) {
                    int k = a[i + 1];
                    a[i + 1] = a[i];
                    a[i] = k;
                }
            }
        }
        for (int i = 0; i < a.length; i++) {
            System.out.println(a[i]);
        }
    }

選擇排序:
public static void main(String[] args) {
        int[] a = {3, 7, 4, 1, 8, 2, 9, 6, 5};
        for (int j = 0; j < a.length; j++) {
            //第一趟找出最小的元素,排在第一位,下一趟從第二個元素開始迴圈找出第二小的元素
            for (int i = j + 1; i < a.length; i++) {
                if (a[j] > a[i]) {
                    int k = a[j];
                    a[j] = a[i];
                    a[i] = k;
                }
            }
        }
        for (int i = 0; i < a.length; i++) {
            System.out.println(a[i]);
        }
    }

插入排序:
 public static void main(String[] args) {
        int[] a = {3, 7, 4, 1, 8, 2, 9, 6, 5};
        //從左至右開始,將要排序的數插入至自身左側已排序的數列中
        for (int i = 1; i < a.length; i++) {
            int j;
            int k = a[i];
            for (j = i; j > 0; j--) {
                if (a[j - 1] > k) {
                    a[j] = a[j - 1];
                } else {
                    break;
                }
            }
            a[j] = k;
        }

        for (int i = 0; i < a.length; i++) {
            System.out.println(a[i]);
        }
    }

三種簡單排序演算法的效率都是O(N²)