×

Sắp xếp mảng với hàm std::sort() trong C++

Trong lập trình C++, việc sắp xếp mảng là một công việc phổ biến và thường xuyên được sử dụng trong nhiều ứng dụng từ đơn giản đến phức tạp. Thư viện chuẩn của C++ cung cấp một hàm mạnh mẽ là std::sort() để nhanh chóng và hiệu quả sắp xếp các phần tử trong một mảng hoặc một container khác. Dưới đây là chi tiết về cách sử dụng và các tùy chọn của hàm này.

Cú pháp cơ bản của std::sort()

Hàm std::sort() nằm trong thư viện <algorithm>, vì vậy bạn cần bao gồm thư viện này trong chương trình của mình bằng lệnh:

#include <algorithm>

Cú pháp cơ bản của hàm std::sort() là:

std::sort(begin_iterator, end_iterator);
  • begin_iterator: iterator trỏ tới phần tử đầu tiên của dãy cần sắp xếp.
  • end_iterator: iterator trỏ tới ngay sau phần tử cuối cùng của dãy cần sắp xếp.

Ví dụ cơ bản

Dưới đây là ví dụ về cách sắp xếp một mảng các số nguyên:

#include <iostream>
#include <algorithm>

int main() {
    int arr[] = {5, 2, 9, 1, 5, 6};
    int n = sizeof(arr) / sizeof(arr[0]);

    std::sort(arr, arr + n);

    std::cout << "Mang da sap xep: ";
    for (int i = 0; i < n; ++i) {
        std::cout << arr[i] << " ";
    }
    std::cout << std::endl;

    return 0;
}

Sắp xếp ngược

Để sắp xếp mảng theo thứ tự giảm dần, bạn có thể sử dụng thêm một hàm so sánh tùy chỉnh. Cú pháp sẽ trở thành:

std::sort(begin_iterator, end_iterator, comparison_function);

Dưới đây là cách sắp xếp mảng theo thứ tự giảm dần:

#include <iostream>
#include <algorithm>

bool compare(int a, int b) {
    return a > b;
}

int main() {
    int arr[] = {5, 2, 9, 1, 5, 6};
    int n = sizeof(arr) / sizeof(arr[0]);

    std::sort(arr, arr + n, compare);

    std::cout << "Mang da sap xep giam dan: ";
    for (int i = 0; i < n; ++i) {
        std::cout << arr[i] << " ";
    }
    std::cout << std::endl;

    return 0;
}

Sử dụng với các container khác

Hàm std::sort() không chỉ sử dụng được với mảng mà còn với các container khác trong C++ như vector. Để minh họa, chúng ta có thể sử dụng vector thay vì mảng tĩnh:

#include <iostream>
#include <algorithm>
#include <vector>

int main() {
    std::vector<int> vec = {5, 2, 9, 1, 5, 6};

    std::sort(vec.begin(), vec.end());

    std::cout << "Vector da sap xep: ";
    for (const auto& elem : vec) {
        std::cout << elem << " ";
    }
    std::cout << std::endl;

    return 0;
}

Lưu ý quan trọng

  1. Độ phức tạp thời gian: std::sort() thường có độ phức tạp trung bình là O(N log N), và hoạt động hiệu quả trên nhiều trường hợp khác nhau.
  2. Yêu cầu bộ nhớ: Đôi khi std::sort() có thể yêu cầu thêm bộ nhớ để lưu trữ tạm bất kỳ phần tử nào trong quá trình sắp xếp.

Qua bài viết này, bạn đã nắm được cách sử dụng hàm std::sort() để sắp xếp các phần tử trong mảng và cả các container khác. Từ đó, bạn có thể áp dụng và tùy chỉnh các cách sắp xếp khác nhau phù hợp với nhu cầu của mình.

Comments