幾種簡單排序算法簡介

插入排序,選擇排序,交換排序,歸併排序;

其中選擇排序分爲:基礎選擇排序和堆排序;

交換排序:冒泡排序和快速排序;

歸併暫不涉及;


插入排序:通常人們整理橋牌的方法是一張一張的來,將每一張牌插入到其他已經有序的牌中的適當位置。在計算機的實現中,爲了給要插入的元素騰出空間,我們需要將其餘所有元素在插入之前都向右移動一位。

實現代碼:
    public void insertSort(){
        int temp;
        for(int i=1;i<paramArray.length;i++){
            for(int j=i;j>0;j--){
                if(paramArray[j] < paramArray[j-1]){
                    temp =paramArray[j];
                    paramArray[j]=paramArray[j-1];
                    paramArray[j-1]=temp;
                }
            }
        }
    }


選擇排序:首先,找到數組中最小的那個元素,其次,將它和數組的第一個元素交換位置(如果第一個元素就是最小元素那麼它就和自己交換)。再次,在剩下的元素中
找到最小的元素,將它與數組的第二個元素交換位置。如此往復,直到將整個數組排序。

實現代碼:

  public void selectSort(){
        int temp;
        for(int i=0;i<paramArray.length;i++){
            for(int j=i+1;j<paramArray.length;j++){
                if(paramArray[i] < paramArray[j]){
                    temp =paramArray[i];
                    paramArray[i]=paramArray[j];
                    paramArray[j]=temp;
                }
            }
        }
    }


交換排序->冒泡排序:

實現代碼:

public void maopaoSort(){
        int temp;
        for(int i=0;i<paramArray.length-1;i++){
            for(int j=0;j<paramArray.length-1;j++){
                if(paramArray[j] < paramArray[j+1]){
                    temp =paramArray[j];
                    paramArray[j]=paramArray[j+1];
                    paramArray[j+1]=temp;
                }
            }
        }
    }

快速排序:

實現代碼:

public void quickSort(int left, int right, int baseP){
        if(left > right){
            return;
        }
        int i,j,temp,t;
        i = left;
        j  = right;
        temp = paramArray[baseP];
        while(i != j){
            while(paramArray[j] >= temp && i<j){
                 j--;
            }
            while(paramArray[i] <= temp && i < j){
                i++;
            }
            if(i<j){
                t = paramArray[i];
                paramArray[i] = paramArray[j];
                paramArray[j] = t;
            }
        }
        paramArray[baseP] = paramArray[i];
        paramArray[i] = temp;
        quickSort(left,i-1,left);
        quickSort(j+1,right,j+1);
    }


<a href="https://code.csdn.net/snippets/2600839#nogo">完整實現代碼</a>


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