Độ phức tạp của thuật toán?

cho em hỏi đoạn code sau độ phức tạp thuật toán như thế nào

void Sort(int arr[], int n)
{
    int i, j, min_idx;
    
    for (i = 0; i < n-1; i++)
    {
    min_idx = i;
    for (j = i+1; j < n; j++)
        if (arr[j] < arr[min_idx])
        min_idx = j;

        swap(arr[min_idx], arr[i]);
    }
}

void swap(int &xp, int &yp)
{
    int temp = xp;
    xp = yp;
    yp = temp;
}

như trong sách thì nói o(n^2) trong tất cả trường hợp , nhưng em thấy ở trường hợp tốt nhất thì chỉ là o(n) thôi chứ nhỉ vd : {1,2,3,4,5}

Vòng for trong chạy vô điều kiện nên O(n^2) :slight_smile:

3 Likes

trong trường hợp mảng a ={1,2,3,4,5} thì đâu có chạy vào vòng for trong đâu anh

Vẫn chạy vòng for thứ 2 chứ, chỉ là không chạy vào đoạn min_idx = j; trong trường hợp đấy thôi :))

3 Likes

ok em hiểu rồi …

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