經典排序算法——雞尾酒排序

雞尾酒排序就是冒泡排序改進的一種,不同於冒泡排序,雞尾酒是雙向的,它每一次都會先進行從左到右的升序排列,再從右到左的降序排列。

就像:   2,4,10,3,33

第一次:2,4,3,10,33

第二次:2,3,4,10,33

但是需要考慮的是他可能不需要到排完數組長度一半的次數就排完了,所以需要加一個判斷符,每次只要不需要排序就break出來。

先看看普通的冒泡排序:代碼如下

//冒泡排序
public static void BubbleSort(int[] arr) {

    for (int i = 0; i < arr.Length; i++) {
        for (int j = 1; j < arr.Length - i; j++) {
            if (arr[j - 1] > arr[j]) {
                int temp = arr[j - 1];
                arr[j - 1] = arr[j];
                arr[j] = temp;
            }
        }
    }
}

再來看看改進的雞尾酒排序:

//雞尾酒排序
public static void MyCocktailSort(int[] arr) {

    for (int i = 0; i <= arr.Length/2; i++) {
        bool isContinue = true;     //標識是否需要繼續排序
        for (int front = i + 1; front < arr.Length - i; front++) {
            if (arr[front - 1] > arr[front]) {
                int temp = arr[front - 1];
                arr[front - 1] = arr[front];
                arr[front] = temp;
                isContinue = false;
            }
        }

        for (int back = arr.Length - i - 1; back >= i+1; back--) {
            if (arr[back - 1] > arr[back]) {
                int temp = arr[back - 1];
                arr[back - 1] = arr[back];
                arr[back] = temp;
                isContinue = false;
            }
        }
        if (isContinue) break;
    }
}

 

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