Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

โปรแกรม C++ สำหรับการเรียงลำดับแบบ Cocktail Sort


Cocktail Sort เป็นการเปลี่ยนแปลงของ Bubble Sort ที่เป็นอัลกอริทึมการเรียงลำดับที่เสถียร (stable sorting algorithm) และเป็นการเรียงแบบเปรียบเทียบ (comparison sort) ซึ่งรู้จักในชื่ออื่นๆ เช่น Bidirectional Bubble Sort, Cocktail Shaker Sort, Shaker Sort (ซึ่งอาจหมายถึงรูปแบบหนึ่งของ Selection Sort), Ripple Sort, Shuffle Sort หรือ Shuttle Sort อัลกอริทึมนี้แตกต่างจาก Bubble Sort อยู่ที่การเรียงลำดับในทั้งสองทิศทางในแต่ละรอบการผ่านรายการ

Input: 53421 Output: 12345

คำอธิบาย

ใน Cocktail Sort อาร์เรย์จะประกอบด้วยองค์ประกอบที่ยังไม่ได้เรียงลำดับ Cocktail Sort ทำงานในทั้งสองทิศทางในแต่ละรอบการผ่านรายการ มันเรียงลำดับอาร์เรย์โดยใช้ Bubble Sort หนึ่งครั้งไปข้างหน้าและหนึ่งครั้งถอยหลัง

ตัวอย่าง

#include <iostream>
using namespace std;

int main() {
    int arr[] = { 5, 3, 4, 2, 1 };
    int m = 5;
    int n, c;
    n = m;
    do {
        for (int i = 0; i < n - 1; i++) {
            if (arr[i] > arr[i + 1]) {
                arr[i] = arr[i] + arr[i + 1];
                arr[i + 1] = arr[i] - arr[i + 1];
                arr[i] = arr[i] - arr[i + 1];
            }
        }
        n = n - 1;
        for (int i = m - 1, c = 0; i >= c; i--) {
            if (arr[i] < arr[i - 1]) {
                arr[i] = arr[i] + arr[i - 1];
                arr[i - 1] = arr[i] - arr[i - 1];
                arr[i] = arr[i] - arr[i - 1];
            }
        }
        c = c + 1;
    } while (n != 0 && c != 0);
    for (int i = 0; i < m; i++) {
        cout << arr[i] << "\t";
    }
}