Bài tập

Sắp xếp mảng 1 chiều theo thứ tự tăng dần trong lập trình C/C++

Huy Erick

Sắp xếp mảng 1 chiều theo thứ tự tăng dần là một bài toán quan trọng trong lập trình. Đây là một trong những khái niệm cơ bản mà ai cũng phải nắm vững khi...

Sắp xếp mảng 1 chiều theo thứ tự tăng dần là một bài toán quan trọng trong lập trình. Đây là một trong những khái niệm cơ bản mà ai cũng phải nắm vững khi học lập trình. Bằng cách sắp xếp dãy số theo thứ tự tăng dần, chúng ta có thể tổ chức dữ liệu một cách dễ dàng và tiện lợi.

Thuật toán sắp xếp đổi chỗ trực tiếp

Trong bài viết này, chúng ta sẽ sử dụng thuật toán "Sắp xếp đổi chỗ trực tiếp" để sắp xếp mảng 1 chiều theo thứ tự tăng dần. Đây là một thuật toán đơn giản và dễ hiểu, phù hợp cho những người mới bắt đầu làm quen với lập trình.

Ý tưởng của thuật toán này là lấy phần tử đầu tiên trong mảng và so sánh nó với các phần tử còn lại. Nếu có phần tử nào nhỏ hơn phần tử đầu tiên, ta hoán đổi vị trí của hai phần tử đó. Tiếp tục quá trình này cho tới khi kết thúc mảng. Khi đó, phần tử đầu tiên sẽ là phần tử nhỏ nhất trong mảng. Lặp lại quá trình này cho tất cả các phần tử trong mảng.

Dưới đây là minh họa cho thuật toán sắp xếp đổi chỗ trực tiếp:

Minh họa thuật toán sắp xếp đổi chỗ trực tiếp (Nguồn: wikipedia.org)

Chương trình sắp xếp mảng 1 chiều tăng dần với C

Dưới đây là đoạn mã C để sắp xếp mảng 1 chiều theo thứ tự tăng dần:

#include 

void interchangeSort(int arr[], int n) {
    int i, j, temp;
    for (i = 0; i  n - 1; i++) {
        for (j = i + 1; j  n; j++) {
            if (arr[i] > arr[j]) {
                temp = arr[i];
                arr[i] = arr[j];
                arr[j] = temp;
            }
        }
    }
}

int main() {
    int arr[] = {5, 2, 8, 3, 1};
    int n = sizeof(arr) / sizeof(arr[0]);
    interchangeSort(arr, n);
    printf("Mang sau khi sap xep theo thu tu tang dan: ");
    for (int i = 0; i  n; i++) {
        printf("%d ", arr[i]);
    }
    return 0;
}

Kết quả khi chạy chương trình sẽ là:

Chương trình sắp xếp mảng 1 chiều tăng dần với C++

Dưới đây là đoạn mã C++ để sắp xếp mảng 1 chiều theo thứ tự tăng dần:

#include 
using namespace std;

void interchangeSort(int arr[], int n) {
    int i, j, temp;
    for (i = 0; i  n - 1; i++) {
        for (j = i + 1; j  n; j++) {
            if (arr[i] > arr[j]) {
                temp = arr[i];
                arr[i] = arr[j];
                arr[j] = temp;
            }
        }
    }
}

int main() {
    int arr[] = {5, 2, 8, 3, 1};
    int n = sizeof(arr) / sizeof(arr[0]);
    interchangeSort(arr, n);
    cout  "Mang sau khi sap xep theo thu tu tang dan: ";
    for (int i = 0; i  n; i++) {
        cout  arr[i]  " ";
    }
    return 0;
}

Đoạn mã này chỉ khác đoạn mã C ở phần nhập xuất. Kết quả khi chạy chương trình sẽ như sau:

Xem tất cả bài viết chủ đề về C/C++ tại đây

1