1. 程式人生 > 其它 >氣泡排序 選擇排序 插入排序

氣泡排序 選擇排序 插入排序

排序

十大經典排序演算法總結(Java實現+動畫)_meibenxiang的部落格-CSDN部落格_十大排序演算法

說明

簡單的說一下幾個排序,都是從左往右排序,從小到大,氣泡排序直接雙重for迴圈,選擇排序需要宣告minIndex,快速排序需要宣告num和j

1 氣泡排序

最基本的排序,牢記陣列長度為N,則判斷N>0後,使用雙層for迴圈,外層i<N-1,內層j<N-1-i,如果陣列[j]>陣列[j+1],則交換位置

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

2 選擇排序

最常用的排序,牢記陣列長度為N,則判斷N>0後,首先一層for迴圈,i<N,並且記錄本次迴圈i對應的陣列索引minIndex,預設其是當前位置向右看最小值的索引,即minIndex=i,然後第二層for迴圈,j從i開始,j<N,如果array[j]<array[minIndex]就記錄j為最小值索引,即minIndex=j,記憶體迴圈結束後令array[i]與array[minIndex]交換位置

public static int[] selectSort(int[] array){
    if (array.length>0){
        for (int i=0 ;i<array.length;i++){
            int minIndex=i;
            for (int j=i;j<array.length;j++){
                if (array[j]<array[minIndex])
                {
                    minIndex=j;
                }
            }
            int temp = array[i];
            array[i]=array[minIndex];
            array[minIndex]=temp;
        }
    }
    return array;
}

3 插入排序

將整個佇列看成兩個區域,左邊是排好的,右邊是待排的,牢記陣列長度為N,令i從索引1開始,不斷從待排區域取值,因此i<N,每次取值時記錄該值num=array[i],再宣告j,令j=i-1,不斷從i-1開始往左取陣列的值,因此j≥0並且j--,當num<array[j]時,將排好的值往右移一個位置,這會讓array[i]被覆蓋,但是這個值已經被num存好,當發現array[j]<num,說明array[j+1]就是num要存放的位置,此時直接break跳出迴圈

public static int[] insertSort(int[] array){
    if (array.length>0){
        for (int i=1;i<array.length;i++){
            int num = array[i];
            int j;
            for (j = i-1;j>=0;j--){
                if (num<array[j]){
                    array[j+1]=array[j];
                }else{
                    break;
                }
            }
            array[j+1]=num;
        }
    }
    return array;
}