Cách sử dụng lệnh "sort"

mọi người cho e hỏi là lệnh sort xài kiểu gì và sự khác nhau giữa 2 code này là gì? E thấy nó cho 2 kq giống nhau.

#include<bits/stdc++.h>

using namespace std;

int main() {
    int n, a[1000];
    cin >> n;
    for (int i = 0; i < n; i++)
    {
        cin >> a[i];
    }
    sort(a, a + n);
    for (int i = 0; i < n; i++)
        cout << a[i] << " ";
    return 0;
}





#include<iostream>

using namespace std;

int main() {
    int n;
    int arr[1000];
    cin >> n;
    for (int i = 0; i < n; i++) {
        cin >> arr[i];
    }
    for (int i = 0; i < n; i++) {
        for (int j = i + 1; j < n; j++) {
            if (arr[i] > arr[j]) {
                // Nếu arr[i] > arr[j] thì hoán đổi giá trị của arr[i] và arr[j]
                int temp = arr[i];
                arr[i] = arr[j];
                arr[j] = temp;
            }
        }
    }
    for (int i = 0; i < n; i++) {
        cout << arr[i] << " ";
    }
    return 0;
}

std::sort được định nghĩa trong thư viện algorithm, có độ phức tạp là O(N·log(N)).

Bên cạnh đó, phương thức sort do bạn tự định nghĩa có độ phức tạp O(N*N), chậm hơn khá nhiều so với std::sort

Về cách sử dụng std::sort, bạn vui lòng tham khảo ở đây
https://en.cppreference.com/w/cpp/algorithm/sort

7 Likes

mình cảm ơn nhiều nha

std::sort áp dụng khái niệm template trong C++, cho phép người dùng khái quát hoá kiểu dữ liệu của các thuộc tính, tham số của class, function. Như vậy, dùng std::sort, bạn có thể truyền vào “Random Access” type bất kỳ, điển hình là array, vector, … Bạn có thể dùng std::sort để sắp xếp vector< int >, vector< double >, vector< string >, … Trong khi phương thức sort do bạn tự định nghĩa trên chỉ giúp bạn xử lý array kiểu int mà thôi.

4 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?