排序演算法 - 氣泡排序和選擇排序

b9x_發表於2018-03-11

氣泡排序的基本思想就是:從無序序列頭部開始,進行兩兩比較,根據大小交換位置,直到最後將最大(小)的資料元素交換到了無序佇列的隊尾,從而成為有序序列的一部分;下一次繼續這個過程,直到所有資料元素都排好序。即每次通過兩兩比較交換位置,選出剩餘無序序列裡最大(小)的資料元素放到隊尾。

package com.zx.sort;

import java.util.Arrays;

public class Bubble {

    public static void main(String[] args) {

        int[] a={9,5,3,7,9,10,2,66,4};
        sort(a);
        System.out.println(Arrays.toString(a));
    }

    public static void sort(int[] a){
        for (int i = 0; i < a.length-1; i++) {
            for (int j = 0; j < a.length-i-1; j++) {
                if (a[j] > a[j+1]) {
                    int temp = a[j];
                    a[j] = a[j+1];
                    a[j+1] = temp;
                }   
            }
        }
    }
}

選擇排序的思想:第一趟從n個元素的資料序列中選出關鍵字最小/大的元素並放在最前/後位置,下一趟從n-1個元素中選出最小/大的元素並放在最前/後位置。以此類推,經過n-1趟完成排序。

import java.util.Arrays;

public class Selection {

    public static void main(String[] args) {

        int[] a = {9,1,3,7,2,10,6};
        sort(a);
        System.out.println(Arrays.toString(a));
    }

    public static void sort(int[] a){
        for (int i = 0; i < a.length; i++) {
            for (int j = i+1; j < a.length; j++) {
                if(a[i] > a[j]){
                    int temp = a[i];
                    a[i] = a[j];
                    a[j] = temp;
                }
            }
        }
    }
}

氣泡排序和選擇排序的區別: 氣泡排序是通過相鄰兩個數的比較每次排出最大的一個數到隊首或隊尾。 快速排序是通過當前位置與之後的每一個數比較選出有序情況下適合放在該位置的數。

相關文章