Sắp Xếp Nổi Bọt

Thuật toán sắp xếp nổi bọt.

·

1 min read

Đề Bài:

Hãy thực hiện thuật toán sắp xếp nổi bọt trên dãy N số nguyên. Ghi ra các bước thực hiện thuật toán.

Input:

Dòng 1 ghi số N (không quá 100). Dòng 2 ghi N số nguyên dương (không quá 100).

Output:

Ghi ra màn hình từng bước thực hiện thuật toán. Mỗi bước trên một dòng, các số trong dãy cách nhau đúng một khoảng trống.

Ví Dụ

image

Solution

#include <stdio.h>
#include <stdlib.h>

void swap(int *x, int *y)
{
    int temp = *x;
    *x = *y;
    *y = temp;
}

void XuatMang(int arr[], int size)
{
    int i;
    for (i = 0; i < size; i++)
        printf("%d ", arr[i]);
    printf("\n");
}

void SapXepNoiBot(int arr[], int n)
{
    int i, j;
    int b = 1;
    for (i = 0; i < n - 1; i++)
    {
        int key = 0;
        for (j = 0; j < n - i - 1; j++)
        {
            if (arr[j] > arr[j + 1])
            {
                swap(&arr[j], &arr[j + 1]);
                key = 1;
            }
        }
        if (key == 1)
        {   printf("Buoc %d: ",b++);
            XuatMang(arr, n);
        }
    }
}

int main()
{
    int n;
    scanf("%d", &n);
    int arr[100];
    for (int i = 0; i < n; i++)
    {
        scanf("%d", &arr[i]);
    }
    SapXepNoiBot(arr, n);
    return 0;
}