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

โปรแกรม C/C++ สำหรับ Odd-Even Sort (Brick Sort)

ที่นี่เราจะดูวิธาทำงานของ Brick Sort เป็นการปรับแต่งจาก Bubble Sort อัลกอริทึมแบ่งเป็น 2 ส่วน: ส่วนคี่ (Odd phase) และ ส่วนคู่ (Even phase) ในส่วนคี่ ใช้ Bubble Sort กับสมาชิก index คี่ ในส่วนคู่ ใช้ Bubble Sort กับสมาชิก index คู่ มาดูอัลกอริทึม

อัลกอริทึม

brickSort(arr, n)

begin
    flag := false
    while the flag is not true, do
        flag := true
        for i := 1 to n-2, increase i by 2, do
            if arr[i] > arr[i+1], then
                exchange arr[i] and arr[i+1]
                flag := false
            end if
        done
        for i := 0 to n-2, increase i by 2, do
            if arr[i] > arr[i+1], then
                exchange arr[i] and arr[i+1]
                flag := false
            end if
        done
    done
end

ตัวอย่างโค้ด (C++)

#include <iostream>
using namespace std;

void brickSort(int arr[], int n) {
    bool flag = false;
    while (!flag) {
        flag = true;
        for (int i = 1; i < n-1; i = i+2) {
            if (arr[i] > arr[i+1]) {
                swap(arr[i], arr[i+1]);
                flag = false;
            }
        }
        for (int i = 0; i < n-1; i = i+2) {
            if (arr[i] > arr[i+1]) {
                swap(arr[i], arr[i+1]);
                flag = false;
            }
        }
    }
}

int main() {
    int data[] = {54, 74, 98, 154, 98, 32, 20, 13, 35, 40};
    int n = sizeof(data)/sizeof(data[0]);
    cout << "Sorted Sequence ";
    brickSort(data, n);
    for (int i = 0; i < n; i++) {
        cout << data[i] << " ";
    }
}

ผลลัพธ์

Sorted Sequence 13 20 32 35 40 54 74 98 98 154